aboutsummaryrefslogtreecommitdiffstats
path: root/my-evolution
diff options
context:
space:
mode:
authornobody <nobody@localhost>2002-05-16 00:19:25 +0800
committernobody <nobody@localhost>2002-05-16 00:19:25 +0800
commitacdd664f5104862243db8c3a0689d5ac4ede774e (patch)
tree9a14849dd3a40bd1667b88d689e2aa7d58d08bce /my-evolution
parent74f4231f4eb650f0243ff39ab5a085b1df4f7697 (diff)
downloadgsoc2013-evolution-GNOME_UTILS_2_0_2.tar
gsoc2013-evolution-GNOME_UTILS_2_0_2.tar.gz
gsoc2013-evolution-GNOME_UTILS_2_0_2.tar.bz2
gsoc2013-evolution-GNOME_UTILS_2_0_2.tar.lz
gsoc2013-evolution-GNOME_UTILS_2_0_2.tar.xz
gsoc2013-evolution-GNOME_UTILS_2_0_2.tar.zst
gsoc2013-evolution-GNOME_UTILS_2_0_2.zip
This commit was manufactured by cvs2svn to create tagGNOME_UTILS_2_0_2
'GNOME_UTILS_2_0_2'. svn path=/tags/GNOME_UTILS_2_0_2/; revision=16870
Diffstat (limited to 'my-evolution')
-rw-r--r--my-evolution/.cvsignore13
-rw-r--r--my-evolution/ChangeLog1565
-rw-r--r--my-evolution/GNOME_Evolution_Summary.oaf.in71
-rw-r--r--my-evolution/GNOME_Evolution_Summary.oaf.in.in71
-rwxr-xr-xmy-evolution/Location-translation-script8
-rw-r--r--my-evolution/Locations3022
-rw-r--r--my-evolution/Locations.h2538
-rw-r--r--my-evolution/Makefile.am130
-rw-r--r--my-evolution/check-empty.xpm21
-rw-r--r--my-evolution/check-filled.xpm21
-rw-r--r--my-evolution/check-none.xpm20
-rw-r--r--my-evolution/component-factory.c177
-rw-r--r--my-evolution/component-factory.h28
-rw-r--r--my-evolution/e-cell-tri.c121
-rw-r--r--my-evolution/e-cell-tri.h44
-rw-r--r--my-evolution/e-summary-calendar.c574
-rw-r--r--my-evolution/e-summary-calendar.h46
-rw-r--r--my-evolution/e-summary-factory.c159
-rw-r--r--my-evolution/e-summary-factory.h34
-rw-r--r--my-evolution/e-summary-mail.c926
-rw-r--r--my-evolution/e-summary-mail.h54
-rw-r--r--my-evolution/e-summary-offline-handler.c292
-rw-r--r--my-evolution/e-summary-offline-handler.h74
-rw-r--r--my-evolution/e-summary-preferences.c1235
-rw-r--r--my-evolution/e-summary-preferences.h39
-rw-r--r--my-evolution/e-summary-rdf.c633
-rw-r--r--my-evolution/e-summary-rdf.h36
-rw-r--r--my-evolution/e-summary-shown.c621
-rw-r--r--my-evolution/e-summary-shown.h74
-rw-r--r--my-evolution/e-summary-table.c441
-rw-r--r--my-evolution/e-summary-table.h74
-rw-r--r--my-evolution/e-summary-tasks.c430
-rw-r--r--my-evolution/e-summary-tasks.h35
-rw-r--r--my-evolution/e-summary-type.h28
-rw-r--r--my-evolution/e-summary-weather.c829
-rw-r--r--my-evolution/e-summary-weather.h153
-rw-r--r--my-evolution/e-summary.c939
-rw-r--r--my-evolution/e-summary.h171
-rw-r--r--my-evolution/main.c85
-rw-r--r--my-evolution/metar.c1016
-rw-r--r--my-evolution/metar.h48
-rw-r--r--my-evolution/my-evolution-html.h68
-rw-r--r--my-evolution/my-evolution.glade626
-rw-r--r--my-evolution/weather.h54
44 files changed, 0 insertions, 17644 deletions
diff --git a/my-evolution/.cvsignore b/my-evolution/.cvsignore
deleted file mode 100644
index 0a7c308f23..0000000000
--- a/my-evolution/.cvsignore
+++ /dev/null
@@ -1,13 +0,0 @@
-.deps
-.libs
-.pure
-Makefile
-Makefile.in
-Mail-stubs.c
-Mail-skels.c
-Mail-common.c
-Mail.h
-evolution-executive-summary
-evolution-executive-summary.pure
-GNOME_Evolution_Summary.oaf
-GNOME_Evolution_Summary.oaf.in
diff --git a/my-evolution/ChangeLog b/my-evolution/ChangeLog
deleted file mode 100644
index 5e021f68ff..0000000000
--- a/my-evolution/ChangeLog
+++ /dev/null
@@ -1,1565 +0,0 @@
-2002-05-14 Christopher James Lahey <clahey@ximian.com>
-
- * e-summary-mail.c (folder_gen_html): Use the uri stored in the
- ESummaryMailFolder object here.
- (e_summary_mail_generate_html): Only show email folders if they
- have > 0 unread messages.
- (new_folder_cb): Save the evolutionUri here.
-
-2002-04-08 Iain Holmes <iain@ximian.com>
-
- * e-summary-shown.c (construct_pixmap_butto): Create a button with a
- label and a pixmap.
- (e_summary_shown_init): Use the pixmap buttons.
-
-2002-04-08 Iain Holmes <iain@ximian.com>
-
- * e-summary-mail.c (mail_change_notify): Don't use an ESummary object,
- get the prefs from the global preferences.
- (e_summary_mail_init): Don't connect to the listener.
- (e_summary_mail_free): Don't disconnect the listener.
- (folder_info_pb_changed): Register the storages.
- (lazy_register_storages): Get the property bag, and check if the
- folder-info is ready. If so register the storages, otherwise get the
- propertybag listener and listen for changes.
- (e_summary_folder_inif_folder_store): Listen to changes in the stores
- and register the storages only when the folder info is ready for it.
-
-2002-04-22 Iain Holmes <iain@ximian.com>
-
- * e-summary-mail.c: Remove the shown and mode bits from the
- ESummaryMail structure.
- (e_summary_mail_generate_html): USe the folder_store list instead
- of the blank one in mail->
- (new_folder_cb): Allow all mail folders now.
- (update_folder_cb): Get the uri correctly.
- (mail_change_notify): Remove debugging spew.
- (e_summary_mail_reconfigure): Comment out the part that adds a
- protocol to the front of a uri.
- (insert_path_recur): If there is no toplevel, guess if from the
- folder path. Not sure if it works for everything.
- (add_storage_to_table): Store the whole of the sorted list,
- and resort it every time.
- (make_toplevel): I18n the titles, and remove the debugging.
- (e_summary_mail_fill_list): Store the sortewd list.
-
- * e-summary_preferences.c (fill_rdf_etable): Create a new entry
- to add to the shown list.
-
- * e-summary-shown.c (make_table): take a title for the table.
- Generate the spec from that table.
- (e_tree_model_node_append): Freeze the tree before adding the
- node.
- (e_summary_shown_add_node): Take an expanded boolean.
-
- * e-summary-table.c: Make the SPEC set the width correctly.
- (e_summary_table_add_node): Freeze the table.
-
- * e-summary-weather.c (is_weather_shown): Search the global_prefs
- to see if the node is shown.
- (e_summary_weather_fill_etable): Set the expanded state on all to
- FALSE except for leaf nodes..
- Create a new entry for shown rows.
-
-2002-04-08 Dan Winship <danw@ximian.com>
-
- * component-factory.c (create_view): Add view_info arg but don't
- do anything with it.
-
-2002-04-06 JP Rosevear <jpr@ximian.com>
-
- * GNOME_Evolution_Summary.oaf.in.in: add config_item:priority
-
-2002-04-05 JP Rosevear <jpr@ximian.com>
-
- * Makefile.am: dist the relevant xpms
-
-2002-04-04 JP Rosevear <jpr@ximian.com>
-
- * Makefile.am: fix substitution typo
-
-2002-03-30 Ettore Perazzoli <ettore@ximian.com>
-
- * Makefile.am: Added support for the ENABLE_SHLIB_COMPONENTS
- conditional.
-
- * GNOME_Evolution_Summary.oaf.in.in: New.
-
- * e-summary-mail.c (update_folder_cb): Protect against
- summary->mail being NULL.
-
- * component-factory.c: Add a shlib factory.
- (create_component): Get a @factory and @data.
- (component_factory_init): Actually make it use a
- BonoboGenericFactory again.
-
-2002-03-29 Ettore Perazzoli <ettore@ximian.com>
-
- * GNOME_Evolution_Summary.oaf.in: Add priority.
-
-2002-03-19 Dan Winship <danw@ximian.com>
-
- * Makefile.am (evolution_executive_summary_LDADD):
- s/libversit.la/libversit.a/
-
-2002-03-19 Iain Holmes <iain@ximian.com>
-
- * component-factory.c: Create a global_preferences structure.
- (create_view): Pass in the global_preferences to the view.
- (create_component): Initialise the preferences.
-
- * e-summary-factory.[ch] (e_summary_factory_new_control): Take a prefs
- structure and pass it to the view creation.
-
- * e-summary-mail: Remove some debug spew.
-
- * e-summary-preferences.[ch]: Create a global_preferences structure.
- (e_summary_preferences_init): just return the prefs instead of adding
- a pointer to it.
- (config_control_destroy_cb): Remove the old_prefs stuff.
- (factory_fn): Ditto.
-
- * e-summary.[ch] (e_summary_init): Don't initialise the preferences
- here.
- (e_summary_new): Take a preferences structure and keep a pointer to
- it.
-
-2002-03-15 Iain Holmes <iain@ximian.com>
-
- * Makefile.am: Add the e-summary-shown.[ch] files.
-
- * e-summary-mail.c: Add entries for the Storages in the private
- struct.
- (new_folder_cb): Only allow mail folders that are local or vfolders.
- Store the StorageInfo that the folder belongs to in the folder struct
- Add the folder to the list of folders in the storage.
- (update_folder_cb): Update the signature.
- (mail_change_notify): Simplify the check to see if we are displaying
- the folder.
- (e_summary_mail_register_storage): Take a name argument.
- Create a StorageInfo structure, connect the signals and add the
- listener.
- (e_summary_mail_register_local_storage): Get the local storage from
- the shell and register it with e_summary_mail_register_storage.
- (storage_notify): Receive notifications when a new storage is created
- or destroyed or changed. Stuff only happens when a storage is
- created, currently.
- (e_summary_mail_register_storages): Don't register local storage
- here. Get the StorageRegistry from the corba_shell, create a new
- BonoboListener and add it to the registry.
- (e_summary_mail_init): Free a CORBA_Environment.
- (e_summary_mail_reconfigure): Add a check for the uri being a
- vfolder.
- (str_compare): Compare ESummaryMailFolders instead of MailRowDatas.
- (sort_storages): Compare 2 storage names.
- (get_parent_path): Special case for the vfolders.
- (insert_path_recur): Remove the toplevel creation.
- Create a toplevel node if the uri is a storage toplevel.
- Special case the name finder for vfolders.
- Get the number of children in the parent so that we can add the new
- child after the rest.
- (add_storage_to_table): For each folder in a storage, add it to the
- table.
- (make_toplevel): Generate the toplevel name for each storage.
- (e_summary_mail_fill_list): For each storage, add the folders.
-
- * e-summary-preferences.c (fill_rdf_etable): Put the entries into an
- ESummaryShown instead of an ESummaryTable.
- (make_property_dialog): Hook up to the Showns.
- (add_shown_to_list): Add the locations to the list.
- (property_box_clicked_cb): Create a new list for the RDFs and
- weathers.
- (e_summary_preferences_make_rdf_table): Make an ESummaryShown.
- (e_summary_preferences_make_weather_table): Make an ESummaryShown.
-
- * e-summary-table.c: Use ECellTri.
- (value_at): Get the right value for the TriCell.
- (set_value_at): Set the right value for the TriCell.
- (e_summary_table_init): Use the ECellTri.
- (e_summary_table_get_num_children): Get the number of children a
- path has.
-
- * e-summary-weather.c (e_summary_weather_fill_etable): Use an
- ESummaryShown instead of ESummaryTable.
-
- * e-summary.[ch]: Store the GNOME_Evolution_Shell in the nonprivate
- structure.
-
- * e-summary-shown.[ch]: Widget to do Add-> <-Remove with two tables.
-
-2002-02-22 Iain Holmes <iain@ximian.com>
-
- * e-summary-factory.c: Use the new configure icon.
-
-2002-02-13 Iain Holmes <iain@ximian.com>
-
- * Makefile.am: Add the e-cell-tri.[ch] files
-
- * e-summary-table.c
-
-2002-03-14 Ettore Perazzoli <ettore@ximian.com>
-
- * e-summary-factory.c (e_summary_factory_new_control): Call
- `e_summary_preferences_register_config_control_factory()'.
-
- * e-summary-preferences.c: Remove member `box' from struct
- PropertyData. Added member `config_control'.
- (e_summary_configure): Removed.
- (property_box_destroy_cb): Removed.
- (property_box_clicked_cb): Removed.
- (property_box_apply_cb): New.
- (config_control_destroy_cb): New.
- (factory_fn): New, factory function for the
- EvolutionConfigControl.
- (e_summary_preferences_register_config_control_factory): New.
- (mail_show_full_path_toggled_cb): Invoke ::changed on
- pd->config_control.
- (add_dialog_clicked_cb): Likewise.
- (rdf_refresh_value_changed_cb): Likewise.
- (rdf_limit_value_changed_cb): Likewise.
- (mail_etable_item_changed_cb): Likewise.
- (rdf_etable_item_changed_cb): Likewise.
- (weather_etable_item_changed_cb): Likewise.
- (weather_refresh_value_changed_cb): Likewise.
- (weather_metric_toggled_cb): Likewise.
- (weather_imperial_toggled_cb): Likewise.
- (calendar_one_toggled_cb): Likewise.
- (calendar_five_toggled_cb): Likewise.
- (calendar_week_toggled_cb): Likewise.
- (calendar_month_toggled_cb): Likewise.
- (calendar_all_toggled_cb): Likewise.
- (calendar_today_toggled_cb): Likewise.
- (config_control_destroy_cb): Don't set ->prefs_window to NULL.
-
- * my-evolution.glade: Renamed "notebook2" to "notebook". Also
- change its parent into a GtkWindow as libglade seems to have some
- kind of problem with the GnomePropertyBox [glade_xml_get_widget()
- for "notebook" always returned NULL].
-
- * e-summary.h: Remove member `prefs_window' from `ESummary'.
-
-2002-02-14 Radek Doulik <rodo@ximian.com>
-
- * e-summary-tasks.c (sort_uids): fix case when priority is
- undefined and pri_a or pri_b is returned as NULL, also fixes
- memory leak
-
-2002-02-08 Damon Chaplin <damon@ximian.com>
-
- * e-summary-calendar.c (e_cal_comp_util_compare_event_timezones):
- updated to new version from calendar/gui/comp-util.c
-
-2002-02-04 Iain Holmes <iain@ximian.com>
-
- * Makefile.am: Add the e-summary-table.[ch] files.
-
- * e-summary-mail.c: Move the headers.
- (e_summary_mail_get_html): Regenerate the HTML.
- (update_folder_cb): Make the file:// part static as it's the same
- every time.
- (mail_change_notify): Don't recalculate the HTML here.
- (e_summary_mail_reconfigure): Don't add file:// if it's already there.
- (get_parent_path): Given a path, return it's parent.
- (is_folder_shown): Check all the shown folders to see if the given one
- is shown.
- (insert_path_recur): Recursively add a path to the tree.
- (free_path_hash): Free the key of the hash table.
- (e_summary_mail_fill_list): Add all the folders to the tree.
-
- * e-summary-preferences.c: Move the headers
- (rdf_is_shown): Check if an RDF is shown.
- (fill_rdf_etable): Fill the etable with all the RDFs
- (fill_weather_etable): Fill the weather etable.
- (fill_mail_etable): Ditto (with mail)
- (make_property_dialog): Use the etables.
- (free_property_dialog): Free the new lists.
- (maybe_add_to_shown): Check if the item is clicked and if so add it to
- the list.
- (property_box_clicked_cb): Set all the new properties
- (e_summary_preferences_make_*_table): Make the etables
-
- * e-summary-rdf.c (e_summary_rdf_update): Don't cancel the message,
- just keep using the previous one.
-
- * e-summary-weather.c (message_finished): Better error message.
- (e_summary_weather_update): Just continue if a message is already
- going.
- (is_weather_shown): Find out if a station is shown.
- (e_summary_weather_fill_etable): Fill the etable.
-
- * main.c (main): Init the cursors.
-
- * my-evolution.glade: Add the custom widgets.
-
-2002-02-02 Ettore Perazzoli <ettore@ximian.com>
-
- * e-summary-offline-handler.c (create_connection_list): Allocate
- the ConnectionList list with the right number of entries instead
- of zero.
-
-2002-02-01 Ettore Perazzoli <ettore@ximian.com>
-
- [Fix a crash that can happen if you have opened multiple views of
- the summary and try to go off-line. This is not the correct fix,
- as the code should really be changed to only use one set of
- connections for all the views, instead of binding the connections
- to the view.]
-
- * e-summary-factory.c (e_summary_factory_new_control): Call
- `e_summary_offline_handler_add_summary()' instead of
- e_summary_offline_handler_set_summary()'.
-
- * e-summary-offline-handler.c: Replace member `summary' with
- `summaries' in the ESummaryOfflineHandlerPriv. This way, instead
- of assuming that there is only one summary, we keep a list of the
- summaries.
- (impl_destroy): Free ->summaries.
- (e_summary_offline_handler_set_summary): Removed.
- (e_summary_offline_handler_add_summary): New. Add the summary to
- ->summaries. Also, connect to the ::destroy handler so we can
- bookkeep them correctly.
- (create_connection_list): Made private from
- e_summary_offline_handler_create_connection_list(). Get a GSList
- instead of just one summary, and sum up all the connections from
- it.
- (impl_prepareForOffline): Use it.
- (impl__get_isOffline): Return %FALSE if any of the summaries are
- online, %TRUE otherwise.
- (impl_goOffline): Call ::set_online on all the summaries. Pass
- CORBA_OBJECT_NIL for the progress_listener as it doesn't really
- get used anyways.
- (impl_goOnline): Likewise. Pass CORBA_OBJECT_NIL, not NULL, for
- the progress CORBA_Object pointer.
-
-2002-01-24 Ettore Perazzoli <ettore@ximian.com>
-
- * Makefile.am: Use EVOLUTION_EXECUTIVE_SUMMARY_CFLAGS and
- EVOLUTION_EXECUTIVE_SUMMARY_LIBS.
-
-2002-01-24 Iain Holmes <iain@ximian.com>
-
- * Locations: Applied the Ukraine patch from Leonid Kanter
-
- * Locations.h: Re-generated to get the UK stations added.
-
-2002-01-22 Iain Holmes <iain@ximian.com>
-
- * e-summary-mail (e_summary_mail_reconfigure): Do the list backwards.
-
- * e-summary-preferences.c (fill_mail_shown_clist): Prepend items.
- (mail_add_clicked_cb): Prepend items.
-
-2002-01-04 Iain Holmes <iain@ximian.com>
-
- * e-summary-weather.c (message_finished): Made the Weather message
- more verbose, and say which station data could not be retrieved for.
-
-2002-01-03 Iain Holmes <iain@ximian.com>
-
- * Makefile.am: Use SOUP_CFLAGS and SOUP_LIBS
-
- * e-summary-rdf.c: Include soup.h
- (close_callback): Remove.
- (message_finished): Generate the cache and other stuff and redraw.
- (read_callback): Remove.
- (open_callback): Remove.
- (e_summary_rdf_update): Replace gnome-vfs with Soup stuff.
- (e_summary_rdf_count): Replace gnome-vfs with soup.
- (rdf_free): ditto
- (e_summary_rdf_set_online): Ditto
-
- * e-summary-weather.c: Include soup.h
- (close_callback): Remove.
- (message_finished): Parse all the downloaded html.
- (read_callback): Remove.
- (open_callback): Remove.
- (e_summary_weather_update): Use soup instead of gnome-vfs
- (weather_free): Ditto.
- (e_summary_weather_count): Ditto.
- (e_summary_weather_add): ditto;
- (e_summary_weather_set_online): Ditto.
-
- * e-summary.c (close_callback): Remove.
- (read_callback): Remove.
- (open_callback): Remove.
- (e_read_file_with_length): Read a file.
- (e_summary_url_requested): Create the images cache. Load the image
- with e_read_file_with_length instead of gnome-vfs.
-
- * main.c (main): Remove gnome_vfs_init.
-
- * weather.h: Replace gnome-vfs stuff.
-
-2002-01-03 Iain Holmes <iain@ximian.com>
-
- * e-summary-offline-handler.c (impl_prepareForOffline): Create an
- empty list if the summary == NULL. Fixes bug 18025
-
-2001-12-20 Ettore Perazzoli <ettore@ximian.com>
-
- [Fixes #17377, Evolution doesn't work on multi-depth displays.]
-
- * main.c (main): Push GdkRGB visual and colormap.
-
-2001-12-19 JP Rosevear <jpr@ximian.com>
-
- * e-summary-tasks.c (e_summary_tasks_init): use
- cal_client_open_default_tasks
-
- * e-summary-calendar.c (e_summary_calendar_init): use
- cal_client_open_default_calendar
-
-2001-12-14 Iain Holmes <iain@ximian.com>
-
- * Location-translation-script: shell script to convert Locations to
- Locations.h
-
- * Locations.h: Translatable file for the weather stations.
-
- * Makefile.am: Add these files to the dist.
-
-2001-12-14 Iain Holmes <iain@ximian.com>
-
- * metar.c: Remove the degree symbol.
-
-2001-12-14 Iain Holmes <iain@ximian.com>
-
- * e-summary.c (e_summary_init): Create a translatable string for the
- default HTML, that says "Please wait..."
-
-2001-12-14 Iain Holmes <iain@ximian.com>
-
- * e-summary.c (e_summary_freeze): Check that priv != NULL
- (e_summary_thaw): Check that priv != NULL
- (e_summary_count_connections): Check that summary is a Summary.
- (e_summary_add_connections): Check that the summary is a Summary.
- (e_summary_set_online): Check that the summary is a Summary.
-
- * e-summary-offline-handler.c (impl__get_isOffline): Only check
- summary if it's not NULL.
- (impl_prepareForOffline): Ditto.
- (impl_goOnline): Only go online if summary isn't NULL.
-
-2001-12-13 Iain Holmes <iain@ximian.com>
-
- * e-summary-calendar.c (generate_html): Check that text.value isn't
- NULL.
-
-2001-12-10 Iain Holmes <iain@ximian.com>
-
- * e-summary-rdf.c (e_summary_rdf_init): Set the initial sites to
- Linux Today and Salon.
-
- * e-summary-preferences.c (make_initial_rdf_list): Ditto
-
-2001-12-10 Iain Holmes <iain@ximian.com>
-
- * e-summary-calendar.c (generate_html): Apply damon's change.
-
-2001-12-06 Iain Holmes <iain@ximian.com>
-
- * e-summary-preferences.c (rdfs): Remove the perl.com one.
-
-2001-11-14 Iain Holmes <iain@ximian.com>
-
- * my-evolution.glade: Spell celsius right.
-
-2001-11-13 Damon Chaplin <damon@ximian.com>
-
- * e-summary.c (e_summary_init): make the timezone default to UTC.
-
-2001-11-08 Ettore Perazzoli <ettore@ximian.com>
-
- * e-summary-preferences.c: Removed `morons.org'.
-
-2001-11-06 Iain Holmes <iain@ximian.com>
-
- * e-summary-preferences.c (make_initial_weather_list): Don't free the
- vector. Doh!
-
-2001-10-31 Iain Holmes <iain@ximian.com>
-
- * Locations: Removed Frobisher.
-
-2001-10-31 Iain Holmes <iain@ximian.com>
-
- * Locations: Fixed a spelling mistake.
-
-2001-10-31 Iain Holmes <iain@ximian.com>
-
- * e-summary-preferences.c (make_initial_rdf_list): Put this back.
- (make_initial_weather_list): This too plus fixed a memory leak.
- (vector_from_str_list): Allow a NULL list. Return "" instead of NULL.
- (e_summary_preferences_restore): Allow the display_folders, rdf_urls,
- and stations to be NULL.
-
- * e-summary-weather.c (e_summary_weather_init): Revert the last changes
-
- * e-summary-rdf.c (e_summary_rdf_init): Same.
-
-2001-10-30 Iain Holmes <iain@ximian.com>
-
- * e-summary-preferences.c (find_name_from_url): Check a for NULL values
-
-2001-10-29 Damon Chaplin <damon@ximian.com>
-
- * Makefile.am (evolution_executive_summary_LDADD): use
- libical-evolution.la
-
-2001-10-29 Iain Holmes <iain@ximian.com>
-
- * e-summary-preferences.c (make_initial_rdf_list): Set list to NULL.
- (make_initial_weather_list): Set list to NULL.
-
- * e-summary-weather.c (e_summary_weather_init): Check if the prefs are
- NULL or if the weather stations are NULL.
-
- * e-summary-rdf.c (e_summary_rdf_init): Check if the prefs or the list
- of news feeds is NULL.
-
-2001-10-29 Iain Holmes <iain@ximian.com>
-
- * e-summary-preferences.c (fill_rdf_all_clist): Open the new location.
- If it doesn't exist try the old location.
- (save_known_rdfs): Save to the new location.
-
-2001-10-29 Rodrigo Moya <rodrigo@ximian.com>
-
- * e-summary-calendar.c (e_summary_calendar_init): retrieve the
- default URI for calendars from the configuration instead of
- hard-coding it
-
- * e-summary-tasks.c (e_summary_tasks_init): likewise for tasks
-
-2001-10-29 Ettore Perazzoli <ettore@ximian.com>
-
- * e-summary-preferences.c (make_initial_weather_list): We only
- want KBOS by default.
-
- * e-summary-weather.c (e_summary_weather_init): We only want KBOS
- by default.
-
-2001-10-27 Jon Trowbridge <trow@ximian.com>
-
- * e-summary.c (e_summary_reload): Slow down reload requests
- to work around a bug in gnome-vfs. Ugly, but it works.
- (Bug #12956)
-
-2001-10-26 Iain Holmes <iain@ximian.com>
-
- * e-summary-rdf.c (open_callback): NULL the handle after a failed
- open so the offline handler won't think they're still open.
- (e_summary_rdf_set_online): Cancel all the open connections when the
- summary goes offline.
-
- * e-summary-weather.c (open_callback): NULL the handle after a failed
- open so the offline handler won't think they're still open.
- (e_summary_weather_set_online): Cancel all the open connections when the
- summary goes offline.
-
- * e-summary.c (e_summary_set_online): Call the callback if it's not
- NULL.
-
-2001-10-25 Jon Trowbridge <trow@ximian.com>
-
- * e-summary-tasks.c (sort_uids): It is possible for
- start_foo.value to be NULL after a call to
- cal_component_get_dtstart, so we need to check for this before
- dereferencing it. (Bug #13259)
-
-2001-10-24 Iain Holmes <iain@ximian.com>
-
- * e-summary-mail.c (e_summary_mail_init): Don't free the mail part.
- Allows the summary to still function without the mail part.
-
-2001-10-22 Anna Marie Dirks <anna@ximian.com>
-
- * my-evolution.glade: Changed "Add new feed" to "Add news feed".
-
-2001-10-22 Damon Chaplin <damon@ximian.com>
-
- * e-summary-tasks.c (generate_html): set the default timezone on the
- server.
-
- * e-summary-calendar.c (e_cal_comp_util_compare_event_timezones):
- update to check for DATE values.
- (uids_to_array): pass the default timezone
- to cal_recur_generate_instances.
- (generate_html): set the default timezone on the server.
-
-2001-10-22 Ettore Perazzoli <ettore@ximian.com>
-
- * e-summary-preferences.c (e_summary_configure): Remove the
- help_button in the property box.
-
-2001-10-19 Iain Holmes <iain@ximian.com>
-
- * e-summary-mail.c (e_summary_mail_init): set the summary->mail to
- NULL after freeing it.
- (mail_change_notify): Return if mail == NULL.
-
-
-2001-10-18 Iain Holmes <iain@ximian.com>
-
- * e-summary.c (e_summary_reload): Only reload the views, don't do an
- entire reconfigure.
-
- * e-summary-rdf.c (e_summary_rdf_update): Free stuff and update.
-
- * e-summary-weather.c (e_summary_weather_update): Ditto
-
-2001-10-16 Iain Holmes <iain@ximian.com>
-
- * e-summary.c (e_summary_new): Don't call a draw.
-
- * e-summary-mail.c (e_summary_mail_init): Make sure html is NULL.
-
-2001-10-14 Zbigniew Chyla <cyba@gnome.pl>
-
- * e-summary-calendar.c (generate_html): Made temporary buffer for
- strftime much bigger (it was too small for Polish month names), added
- missing colon and conversion to UTF-8.
-
-2001-10-12 Iain Holmes <iain@ximian.com>
-
- * component-factory.c (component_factory_init): Fix message.
-
- * metar.c: Fix some names.
- Made the weather descriptions easier on the eyes.
-
-2001-10-11 Dan Winship <danw@ximian.com>
-
- * e-summary-mail.c (update_folder_cb): Update the signature to
- match the new signal.
-
-2001-10-10 Iain Holmes <iain@ximian.com>
-
- * e-summary-weather.c (e_summary_weather_update): Return a value.
- Only repoll if the summary is online.
-
- * e-summary-rdf.c (e_summary_rdf_update): Only poll if online
-
-2001-10-10 Iain Holmes <iain@ximian.com>
-
- * my-evolution.glade: Set the minimum length of time for updates to
- 5 minutes.
-
-2001-10-06 Carlos Perelló Marín <carlos@gnome-db.org>
-
- * e-summary-preferences.c: Added HispaLinux
-
-2001-10-05 Iain Holmes <iain@ximian.com>
-
- * e-summary-rdf.c (e_summary_rdf_reconfigure): Set the RDF list to
- NULL before destroying it to fix a race condition.
-
-2001-10-04 Iain Holmes <iain@ximian.com>
-
- * my-evolution.glade: Capitalise stuff
-
-2001-10-03 Iain Holmes <iain@ximian.com>
-
- * e-summary-weather.c (e_summary_weather_init): Swap Xiamen for Tokyo
-
-2001-10-01 Damon Chaplin <damon@ximian.com>
-
- * e-summary-calendar.c (generate_html): used time_add_day/week/month
- _with_zone() functions rather than the old versions.
-
- * e-summary.c (alarm_fn): use time_day_end_with_zone ().
-
- * e-summary-tasks.c (generate_html): removed day_begin and day_end
- since they aren't used, and the calls to time_day_begin/end().
-
-2001-10-02 Iain Holmes <iain@ximian.com>
-
- * e-summary-calendar.c (uids_to_array): Handle recurrances correctly.
- (add_recurrances): Function to generate occurrances
-
-2001-10-02 Rodrigo Moya <rodrigo@ximian.com>
-
- * Makefile.am: add $(BONOBO_GNOME_CFLAGS) to make it compile with
- latest Bonobo, which does not install headers in
- $(gnome_prefix)/include
-
-2001-10-01 Iain Holmes <iain@ximian.com>
-
- * e-summary-rdf.c: Applied patch from Takuo Kitame for using charset
- from the rdf.
-
-2001-09-27 Iain Holmes <iain@ximian.com>
-
- * e-summary-tasks.c (generate_html): Pass the summary to
- get_todays_uids.
- (get_todays_uids): Use the timezone stuff and use the due date instead
- of the end time.
-
-2001-09-27 Iain Holmes <iain@ximian.com>
-
- * e-summary-preferences.c: (rdfs[]): Removed the broken RDFs
- (mail_all_select_row_cb): Don't turn on the -> button if the folder is
- already added.
- (rdf_all_select_row_cb): Ditto
- (weather_all_select_row_cb): Ditto
-
-2001-09-26 Iain Holmes <iain@ximian.com>
-
- * *.[ch]: Add correct approved copyright notices.
-
-2001-09-25 Iain Holmes <iain@ximian.com>
-
- * e-summary.c (e_summary_draw): Check if the summary is frozen, if so
- just set redraw_pending.
- (e_summary_freeze): Freeze the summary.
- (e_summary_thaw): Thaw the summary and redraw if needed.
-
- * e-summary-factory.c (control_activate): Thaw summary.
- (control_deactivate): Freeze summary.
-
-2001-09-25 Iain Holmes <iain@ximian.com>
-
- * Misc warnings cleanups.
-
- * e-summary.c (e_summary_url_requested): Check in the cache for the
- image before spawning a new thread to download it.
- (close_callback): Create a cache first time, add images to it.
-
- * e-summary-tasks.c (generate_html): Use task.png
-
-2001-09-21 Dan Winship <danw@ximian.com>
-
- * e-summary-weather.c (weather_make_html): Add missing
- width/height tags to the sunny/cloudy/etc images to make the page
- render more smoothly.
-
-2001-09-21 Iain Holmes <iain@ximian.com>
-
- * e-summary-calendar.c (generate_html): If the appointment is in a
- different timezone set a timezone icon.
-
-2001-09-20 Iain Holmes <iain@ximian.com>
-
- * e-summary-preferences: Add Red Carpet RDF
-
-2001-09-19 Iain Holmes <iain@ximian.com>
-
- * e-summary-calendar.c (generate_html): If the appointment has an alarm
- display a bell icon.
-
-2001-09-19 Iain Holmes <iain@ximian.com>
-
- * component-factory.c (create_view): Remove spew.
-
- * e-summary-mail.c (e_summary_mail_reconfigure): Get mail info if we
- don't already have it.
- (new_folder_cb): Only get mail info if the folder is being displayed.
-
-2001-09-19 Larry Ewing <lewing@ximian.com>
-
- * e-summary-tasks.c (generate_html): be sure to unref the
- component.
-
-2001-09-19 Iain Holmes <iain@ximian.com>
-
- * e-summary-tasks.c (e_summary_tasks_protocol): Open a task editor.
- (generate_html): Embed the uid of the task in the url.
-
- * e-summary-calendar.c (e_summary_calendar_protocol): Open a calendar
- editor.
- (generate_html): Embed the uid of the task in the url.
-
-2001-09-19 Larry Ewing <lewing@ximian.com>
-
- * e-summary-rdf.c (read_callback): remove redundant if.
- (open_callback): free the previous html even if we get an error.
- (rdf_free): remove redundant null checks.
-
-2001-09-19 Dan Winship <danw@ximian.com>
-
- * e-summary.c (read_callback, etc): Hack around gdkpixbuf lossage
- by not trying to display the images incrementall. Instead, just
- wait until we've read the whole file, then display it all at once.
- Prevents garbage when rendering the icons.
-
-2001-09-18 Iain Holmes <iain@ximian.com>
-
- * e-summary-preferences.c (weather_remove_clicked_cb): Select the next
- row.
- (rdf_remove_clicked_cb): Select the next row.
-
-2001-09-18 Iain Holmes <iain@ximian.com>
-
- * e-summary-preferences.c (mail_remove_clicked_cb): Select the next
- folder for removal.
-
- * e-summary-mail.c (e_summary_mail_reconfigure): Don't do the hashtable
- thing to get folders. Just iterate through the list lookuping the
- folders instead. This keeps the required order.
-
-2001-09-18 Iain Holmes <iain@ximian.com>
-
- * e-summary-preferences.c (mail_add_clicked_cb): Don't add folders that
- are already in the list
-
-2001-09-18 Iain Holmes <iain@ximian.com>
-
- * e-summary-rdf.c (display_doc): Verbose error reporting.
- (read_callback): Same.
- (open_callback): Same.
-
-2001-09-18 Iain Holmes <iain@ximian.com>
-
- * e-summary-weather.c (e_summary_weather_add_location): Append the
- weather locations so they are in the right order.
-
- * e-summary-tasks.c (generate_html): If the text is null, don't print
- (null). Print "No description" instead.
-
- * e-summary-rdf.c (e_summary_rdf_add_uri): Append here as well.
-
- * e-summary-mail.c (maybe_add_to_shown): Append ici.
-
-2001-09-17 Iain Holmes <iain@ximian.com>
-
- * e-summary-weather.c (weather_make_html): Don't make the confusing
- url for the city name.
-
-2001-09-17 Iain Holmes <iain@ximian.com>
-
- * e-summary-mail.c (mail_change_notify): Only redraw the display when
- we receive a notify about a folder we are displaying
-
-2001-09-17 Iain Holmes <iain@ximian.com>
-
- * e-summary-calendar.c (uids_to_array): Correctly use qsort.
- (e_summary_calendar_event_sort_func): Dereference the e1 and e2.
-
-2001-09-17 Federico Mena Quintero <federico@ximian.com>
-
- * e-summary.c (e_summary_init): There is no need to initialize the
- alarm system now.
-
-2001-09-14 Iain Holmes <iain@ximian.com>
-
- * e-summary-calendar.c (uids_to_array): Create ESummaryCalEvents and
- put them in an array to get the timezone stuff right.
- (e_summary_calendar_event_sort_func): Sort the array.
- (generate_html): Use the timezone formats of things.
-
-2001-09-13 Iain Holmes <iain@ximian.com>
-
- * Locations: Removed duff Norway station
-
-2001-09-13 Iain Holmes <iain@ximian.com>
-
- * e-summary-preferences.c: Fix slashdot problem.
-
-2001-09-10 Dan Winship <danw@ximian.com>
-
- Purification.
-
- * e-summary.c (destroy): free the protocol hash.
-
- * e-summary-rdf.c (tree_walk): plug a leak.
-
- * e-summary-weather.c (e_summary_weather_init_locations): Don't
- insert duplicates into the hash table.
-
- * e-summary-mail.c (e_summary_mail_generate_html): free old html
- before setting new
-
- * e-summary.c (e_summary_draw): free weather and rdf html strings.
-
- * e-summary-preferences.c (save_known_rdfs): free strings.
-
-2001-09-10 Iain Holmes <iain@ximian.com>
-
- * e-summary-preferences.c: Add Memepool RDF.
-
-2001-09-06 Iain Holmes <iain@ximian.com>
-
- * e-summary-preferences.c (e_summary_configure): Don't allow dialogs to
- be opened more than once.
- (property_box_destory_cb): NULL the window var.
-
-2001-09-05 Ettore Perazzoli <ettore@ximian.com>
-
- [Fix #958, ShellComponents should not be created by factories, for
- the Summary.]
-
- * component-factory.c (COMPONENT_FACTORY_IID): Removed.
- (COMPONENT_ID): New.
- (create_component): Renamed from `factory_fn'. No args.
- (component_factory_init): Create the BonoboObject with
- `create_component' and register it on OAF.
-
- * GNOME_Evolution_Summary.oaf.in: Remove the
- ShellComponentFactory.
-
-2001-09-05 Iain Holmes <iain@ximian.com>
-
- * Locations: Added some Caracas fixes from Mayly Sanchez.
-
-2001-09-05 Iain Holmes <iain@ximian.com>
-
- * e-summary.c (e_summary_draw): Hack to stop the display jumping to the
- top when it is redrawn.
-
-2001-09-05 Iain Holmes <iain@ximian.com>
-
- * e-summary-calendar.c (generate_html): Check if we need to use 24hr
- format. Don't try to do fancy things with the date and time of an
- appointment.
- (locale_uses_24h_time_format): Cut and pasted from calendar.
- (e_summary_calendar_init): Get the 24hour preferences from the calendar.
-
-2001-09-04 Iain Holmes <iain@ximian.com>
-
- * Locations: Applied patch from Evert Verhellen to fix the Belgium
- stations
-
-2001-09-04 Iain Holmes <iain@ximian.com>
-
- * my-evolution.glade: Fix some accelerator clashes
-
-2001-09-04 Iain Holmes <iain@ximian.com>
-
- * e-summary-preferences.c (add_dialog_clicked_cb): When the feed is
- added make the Apply button activate.
-
-2001-09-04 Iain Holmes <iain@ximian.com>
-
- * metar.c (weather_conditions_string): Don't return '-' if there is no
- condition, as it makes the temperature look negative.
-
-2001-08-27 Ettore Perazzoli <ettore@ximian.com>
-
- * e-summary-weather.c (weather_make_html): Make local variable
- `icon_name' const. Remove unused variable `uri'.
-
- * e-summary.h: Reformatted in GTK+ style.
- (e_summary_remove_online_connection): Added prototype.
-
- * e-summary-preferences.c (fill_mail_shown_clist): Constify local
- variable `name'.
-
- * e-summary-mail.c: #include "e-util/e-path.h". Updated to match
- the new studlyCapsification in shell/Evolution*.idl.
-
-2001-08-23 Iain Holmes <iain@ximian.com>
-
- * e-summary-preferences.c (rdfs): Remove the 4 that don't work.
-
-2001-08-22 Iain Holmes <iain@ximian.com>
-
- * e-summary-tasks.c (generate_html): Skip the task if it's completed.
-
-2001-08-22 Iain Holmes <iain@ximian.com>
-
- * e-summary-preferences.c (mail_show_full_path_toggled): Set the
- property box to changed.
-
-2001-08-22 Iain Holmes <iain@ximian.com>
-
- * e-summary-mail.c (make_pretty_foldername): If show_full_path is TRUE
- then return the full path. Take in the ESummary as well.
- (folder_gen_html): Pass ESummary to make_pretty_foldername.
- (e_summary_mail_generate_html): Pass the ESummary to folder_gen_html.
-
- * e-summary-rdf.c (e_summary_rdf_set_online): Take in a
- GNOME_Evolution_OfflineProgressListener in case we want to do
- individual reporting of rdf's being destroyed.
- (make_connection): Call the RDF Feed a News Feed instead.
-
- * e-summary-weather.c (e_summary_weather_set_online): Same.
-
- * e-summary.c (e_summary_set_online): Pass in the
- GNOME_Evolution_OfflineProgressListener to the set_online callback.
-
- * e-summary-offline-handler.c (impl_goOffline): Pass the listener to the
- callback.
- (impl_goOnline): Pass NULL for the listener.
-
-2001-08-21 Iain Holmes <iain@ximian.com>
-
- * my-evolution-html.h: Set the text colour to black.
-
-2001-08-21 Damon Chaplin <damon@ximian.com>
-
- * e-summary-calendar.c (generate_html):
- * e-summary-tasks.c (generate_html): changed the icons. For calendar
- events we use the 'new appointment' icon from the menu. For tasks we
- use the task icon from the ETable - I wasn't sure about using the
- 'New Task' icon as it has a tick in it which may make people think it
- is complete.
-
-2001-08-19 Ettore Perazzoli <ettore@ximian.com>
-
- * component-factory.c: Change the type from "Summary" to "summary"
- for consistency with the other folder types.
-
-2001-08-17 Zbigniew Chyla <cyba@gnome.pl>
-
- * my-evolution/e-summary-rdf.c (make_connection):
- Marked string for translation (connection type).
-
- * my-evolution/e-summary-weather.c
- (make_url): Split into two functions: make_url and make_anchor.
- (weather_make_html): s/make_url/make_anchor/
- (make_connection): Marked connection type string for franslation,
- assign the real URI to ->hostname (using make_url), not location code.
-
-2001-08-12 Zbigniew Chyla <cyba@gnome.pl>
-
- * e-summary-preferences.c (make_initial_weather_list),
- e-summary-weather.c (e_summary_weather_init):
- Don't hardcode the default list of stations, let translators define it
- per locale/country.
-
-2001-08-17 Iain Holmes <iain@ximian.com>
-
- * e-summary-preferences.c (weather_all_select_row_cb): Unselect the
- row if it isn't a leaf node.
- (weather_add_clicked_cb): Return if location == NULL.
-
-2001-08-15 Iain Holmes <iain@ximian.com>
-
- * e-summary.c (e_summary_draw): Use the US format for dates (Yeeech)
-
-2001-08-15 Iain Holmes <iain@ximian.com>
-
- * e-summary.c: s/My Evolution/Summary/
-
- * e-summary-preferences.c: s/My Evolution/Summary/
-
- * component-factory.c: s/My Evolution/Summary/
-
-2001-08-13 Iain Holmes <iain@ximian.com>
-
- * e-summary-weather.c: Set the default weather stations to Boston (boo)
- and Xiamen (Yey)
-
-2001-08-13 Iain Holmes <iain@ximian.com>
-
- * e-summary-rdf.c: Set the default RDF to CNN
-
-2001-08-13 Jason Leach <jleach@ximian.com>
-
- * e-summary-mail.c (e_summary_mail_free): Disconnect our callbacks
- when we are freeing the ESummaryMail. Fixes #6712.
-
-2001-08-09 Anna Marie Dirks <anna@ximian.com>
-
- * my-evolution-html.h : added more padding between the vertical
- spacer and the icons for the mail/appointments/tasks summaries.
-
-2001-08-09 Anna Marie Dirks <anna@ximian.com>
-
- * my-evolution.glade : added accelerators to all useful widgets
- in this file such that this dialog can now be fully navigated from
- the keyboard.
-
- * e-summary-preferences.c : changed the construct_pixmap_button
- function to take glade xml, an hbox and pixmap, making it possible
- to use glade to define and change the keyboard accelerators, instead
- of trying to do this in the c code.
-
-2001-08-06 Damon Chaplin <damon@ximian.com>
-
- * e-summary-tasks.c (sort_uids):
- (get_todays_uids):
- (generate_html):
- * e-summary-calendar.c (sort_uids): free the CalComponentDateTime
- and icaltimetype values after finishing with them.
-
-2001-08-03 Jason Leach <jleach@ximian.com>
-
- * e-summary-mail.c (update_folder_cb): Callback for the
- EvolutionStorageListener::update_folder signal, so we can update
- mail summaries when they change. Bug #4686.
-
-2001-08-02 Jason Leach <jleach@ximian.com>
-
- * e-summary-calendar.c (generate_html): Use the new and beautiful
- icon from Jakub.
-
- * e-summary-mail.c (e_summary_mail_generate_html): Ditto.
-
- * e-summary-tasks.c (generate_html): Ditto.
-
-2001-07-23 Zbigniew Chyla <cyba@gnome.pl>
-
- * e-summary-rdf.c (display_doc): Convert translated string to UTF8.
-
-2001-07-30 Iain Holmes <iain@ximian.com>
-
- * e-summary-preferences.c: Remove the Wipe Trackers references.
-
- * e-summary-rdf.c: Remove the wip trackers as I'm not 100% sure what it
- does, and it didn't work.
-
- * e-summary.h: Remove the wipe_trackers boolean
-
- * my-evolution.glade: Remove the wipe trackers and shrink the New Feed
- button
-
-2001-07-30 Iain Holmes <iain@ximian.com>
-
- * e-sumary-calendar.c (generate_html): Correct the URL for the links.
-
-2001-07-27 Iain Holmes <iain@ximian.com>
-
- * Locations: Add some more German cities from s.kost@webmacher.de.
-
-2001-07-23 Iain Holmes <iain@ximian.com>
-
- * e-summary-preferences.c (add_dialog_clicked_cb): Add the new RDF to
- the shown clist as well.
-
-2001-07-23 Iain Holmes <iain@ximian.com>
-
- * e-summary-mail.c (e_summary_mail_init): Move the storage register out
- of here into a seperate function.
- (e_summary_mail_register_storages): Register the local storage.
- (e_summary_mail_register_storage): Register a single storage.
-
-2001-07-23 Iain Holmes <iain@ximian.com>
-
- * e-summary-preferences.c: Fix the KDE and Newsforge things. Change the
- KDE rdf to the one that the KDE person told me :)
-
-2001-07-23 Jason Leach <jleach@ximian.com>
-
- * e-summary-preferences.c: Update the url (and site name) for the
- KDE rdf. Bug #5145.
-
-2001-07-21 Ettore Perazzoli <ettore@ximian.com>
-
- * component-factory.c: Make the "My Evolution" folder
- non-creatable by setting the `user_creatable' member of
- `EvolutionShellComponentFolderType' to %FALSE.
-
-2001-07-20 Jason Leach <jleach@ximian.com>
-
- * e-summary-tasks.c: Revert last changes, URIs are now back to
- original in shell.
-
-2001-07-19 Jason Leach <jleach@ximian.com>
-
- * e-summary-tasks.c: Update the evolution:/local/ URI's to
- evolution:/Local Folders/ to go along with todays shell changes.
-
- * e-summary-mail.c: Ditto.
-
- * e-summary-calendar.c: Ditto.
-
-2001-07-19 Iain Holmes <iain@ximian.com>
-
- * e-summary-rdf.c (display_doc): Fix HTML
-
- * e-summary-mail.c (folder_gen_html): correct the folder name.
-
-2001-07-19 Iain Holmes <iain@ximian.com>
-
- * my-evolution-html.h: Set the text colour to black. Frank was claiming
- it picked the default colour from the GTK+ theme, and if it was white
- bad things happened.
-
-2001-07-18 Iain Holmes <iain@ximian.com>
-
- * e-summary-weather.c (weather_make_html): Remove the (more) link.
-
- * e-summary.c (e_summary_draw): Don't append NULL to the GString.
-
- * e-summary-tasks.c: Remove spewage.
-
-2001-07-18 Iain Holmes <iain@ximian.com>
-
- * e-summary-weather.c (weather_make_html): Remove spewage.
-
-2001-07-18 Iain Holmes <iain@ximian.com>
-
- * e-summary.c (e_summary_reconfigure): Reconfigure the tasks.
-
- * e-summary-tasks.c (generate_html): Obtain todays tasks.
- (get_todays_uids): Make a list of todays uids.
-
-2001-07-18 Iain Holmes <iain@ximian.com>
-
- * e-summary-preferences.c (make_property_dialog): Create the image
- buttons.
- (construct_pixmap_button): Create a box with an image and text.
-
-2001-07-18 Iain Holmes <iain@ximian.com>
-
- * e-summary-preferences.c (e_summary_configure): Set the title on the
- window. Just do a g_return_if_fail if the XML file couldn't be loaded.
-
-2001-07-16 Iain Holmes <iain@ximian.com>
-
- * e-summary-rdf.c (display_doc): Nicer error reporting.
-
- * e-summary-weather.c: Nicer error reporting.
-
-2001-07-13 Iain Holmes <iain@ximian.com>
-
- * e-summary-tasks.c: Fix the name of the icon.
-
-2001-07-13 Iain Holmes <iain@ximian.com>
-
- * e-summary-preferences.c (mail_add_clicked_cb): Set the property box
- to changed.
-
-2001-07-13 Zbigniew Chyla <cyba@gnome.pl>
-
- * e-summary.c (e_summary_draw): Convert the date string to utf8 before
- appending it to HTML.
-
-2001-07-12 Iain Holmes <iain@ximian.com>
-
- * metar.c: #include <config.h>
-
-2001-07-12 Iain Holmes <iain@ximian.com>
-
- * e-summary.c (e_summary_draw): put _() around the date string.
-
- * metar.c: Put some _() around things.
-
-2001-07-12 Iain Holmes <iain@ximian.com>
-
- * my-evolution.glade: Made the weather a single selection clist.
-
-2001-07-11 Iain Holmes <iain@ximian.com>
-
- * e-summary-mail.c (e_summary_mail_generate_html): Protect with
- g_return_if_fail
-
-2001-07-11 Iain Holmes <iain@ximian.com>
-
- * e-summary.c (destroy): Destroy the alarm.
- (e_summary_init): Init the alarm.
-
- * e-summary-mail.c (free_folder): Don't free the value.
-
-2001-07-11 Iain Holmes <iain@ximian.com>
-
- * e-summary.c (destroy): Destroy all the subcomponents.
-
- * e-summary-rdf.c (e_summary_rdf_free): Free and stop all tranfsers
-
- * e-summary-weather.c (e_summary_weather_free): Same.
-
- * e-summary-mail.c (e_summary_mail_free): Same.
-
- * e-summary-calendar.c (e_summary_calendar_free): Same.
-
- * e-summary-tasks.c (e_summary_tasks_free): Guess what.
-
-2001-07-10 Iain Holmes <iain@ximian.com>
-
- * e-summary-preferences.c: Correct the Register RDF url.
-
-2001-07-09 Iain Holmes <iain@ximian.com>
-
- * e-summary.c (e_summary_init): Connect a calendar alarm to be notified
- of when the day changes.
-
- * Makefile.am: Link with libalarm.a
-
-2001-07-09 Iain Holmes <iain@ximian.com>
-
- * e-summary-weather.c (weather_make_html): Get an icon for the weather.
-
- * metar.[ch] (icon_from_weather): Work out what icon for a specific
- weather type.
-
-2001-07-09 Iain Holmes <iain@ximian.com>
-
- * e-summary-rdf.c (tree_walk): Fix HTML so it doesn't give the big black
- line
-
-2001-07-09 Iain Holmes <iain@ximian.com>
-
- * e-summary-tasks.c (generate_html): Fix same HTML bug as in calendar.
-
-2001-07-09 Iain Holmes <iain@ximian.com>
-
- * e-summary-calendar.c (generate_html): Show varying times depending
- on how soon the appointment is.
-
-2001-07-09 Iain Holmes <iain@ximian.com>
-
- * e-summary-calendar.c (generate_html): Fix up the HTML so having
- appointments doesn't mess up the display. Set the correct length of
- time to show appointments.
-
-2001-07-09 Iain Holmes <iain@ximian.com>
-
- * e-summary-tasks.c (generate_html): Make the tasks switch to the
- tasks folder when you click on them.
-
-2001-07-09 Kjartan Maraas <kmaraas@gnome.org>
-
- * e-summary-preferences.c: Added #include <config.h> to get
- translations working.
-
-2001-07-06 Iain Holmes <iain@ximian.com>
-
- * e-summary-preferences.c (str_list_from_vector): Change the delimiter
- (vector_from_str_list): Change the delimiter.
- (fill_mail_all_clist): Fill the mail folder clist.
- (fill_mail_shown_clist): Use nicer names.
- (mail_add_clicked_cb): Add folders to the shown list.
-
- * e-summary-mail.c (e_summary_mail_fill_list): Flatten the hashtable
- into the CList.
- (e_summary_mail_uri_to_name): Get the pretty name for a uri.
-
-2001-07-06 Iain Holmes <iain@ximian.com>
-
- * e-summary-preferences.c (fill_rdf_shown_list): Attach data
- (rdf_add_clicked_cb): Allow multiple rows to be removed.
- (rdf_remove_clicked_cb): Use the data.
-
- * my-evolution.glade: Allow multiple selection in the RDF all clist.
- Only allow single selection in the shown rdf list.
-
-2001-07-05 Iain Holmes <iain@ximian.com>
-
- * e-summary-preferences.c (rdf_new_url_clicked_cb): Change RDF to
- news feed.
-
-2001-07-05 Iain Holmes <iain@ximian.com>
-
- * my-evolution.glade: Replace a table with a vbox so that the text
- of the radio buttons can be clicked. Change RDF to News Feed
-
-2001-07-05 Iain Holmes <iain@ximian.com>
-
- * e-summary-preferences.c (add_dialog_clicked_cb): Fix warning
- (fill_rdf_shown_clist): Fix warning.
- (calendar_one_toggled_cb): Set preferences to the right toggle button.
- (calendar_five_toggled_cb): Ditto
- (calendar_week_toggled_cb): Ditto ditto
- (calendar_month_toggled_cb): Ditto dotto
- (calendar_all_toggled_cb): Set the amount of Tasks to be shown
- (calendar_today_toggled_cb): Ditto
- (make_property_dialog): Hook up the calendar radio buttons.
- (e_summary_preferences_restore): Pass NULL as opt_default, not &ev.
-
-2001-07-05 Iain Holmes <iain@ximian.com>
-
- * e-summary-preferences.c (e_summary_preferences_restore): Add
- My-Evolution to the namespace.
- (e_summary_preferences_save): Ditto.
-
-2001-07-05 Iain Holmes <iain@ximian.com>
-
- * e-summary-preferences.c (e_summary_preferences_restore): Re-enabled.
- Bonobo-conf doesn't seem to like NULL for opt_ev.
-
-2001-07-03 Iain Holmes <iain@ximian.com>
-
- * e-summary-prefences.c (e_summary_preferences_restore): Disabled until
- memory corruption thing is found.
-
- * my-evolution.glade: Fix the radio button problem.
-
-2001-07-03 Iain Holmes <iain@ximian.com>
-
- * e-summary-factory.c: Fixed the Bonobo warning.
-
-2001-07-03 Iain Holmes <iain@ximian.com>
-
- * e-summary-preferences.c (e_summary_preferences_restore): Ditch
- gnome-config and replace it with bonobo-conf.
- (e_summary_preferences_save): Ditto.
-
- * e-summary-factory.c: Use the new print.png icon.
-
- * Makefile.am: Add bonobo conf CFLAGS and LIBS
-
-2001-07-03 Iain Holmes <iain@ximian.com>
-
- * e-summary.c (e_summary_set_online): Return if summary == NULL.
- (e_summary_add_connections): Return NULL if summary == NULL.
- (e_summary_count_connections): Return 0 if summary == NULL.
-
-2001-07-02 Iain Holmes <iain@ximian.com>
-
- * e-summary-tasks.[ch]: New files for tasks.
-
- * e-summary.c: USe the tasks.
-
-2001-07-02 Iain Holmes <iain@ximian.com>
-
- * Makefile.am: Add the glade files to the EXTRA_DIST
-
-2001-07-02 Ettore Perazzoli <ettore@ximian.com>
-
- * Makefile.am (evolution_executive_summary_SOURCES): Add
- `e-summary-preferences.h'.
-
-2001-06-30 Iain Holmes <iain@ximian.com>
-
- * e-summary-preferences.c (fill_rdf_all_clist): Load the URLs from a
- file.
- (save_known_urls): Save the known URLs.
- (add_dialog_clicked_cb): Close the dialog on Cancel. Save the URLs on
- Ok.
- (rdf_new_url_clicked_cb): Add some labels and an entry for the name.
-
-2001-06-30 Iain Holmes <iain@ximian.com>
-
- * e-summary-preferences.c (fill_rdf_all_clist): Fill with names
- instead of URLs.
- (find_name_for_url): Given a URL find a name for it if we know it.
- (rdf_add_clicked_cb): Add the name to the clist and the url to the
- list.
-
-2001-06-30 Iain Holmes <iain@ximian.com>
-
- * e-summary-preferences.c (add_dialog_clicked_cb): Add the new url to
- the list.
- (rdf_new_url_clicked_cb): Create a dialog and allow the user to add
- new urls.
-
-2001-06-30 Iain Holmes <iain@ximian.com>
-
- * e-summary-rdf.c (tree_walk): Remove spewage.
- (e_summary_rdf_count):
- (e_summary_rdf_add):
- (make_connection):
- (e_summary_rdf_set_online): Callbacks for the online_handler stuff.
- (e_summary_rdf_init): Setup the offline handler stuff.
- (close_callback): Update the number of onlines there are.
-
- * e-summary-weather.c (close_callback): Update the number of onlines.
- (e_summary_weather_count): Count the number of active downloads.
- (e_summary_weather_add): Make a list of active downloads.
- (make_connection): Make connection data.
- (e_summary_weather_set_online): Set if the component is online or not.
- (e_summary_weather_init): Setup the offline handler stuff.
-
- * e-summary.c (e_summary_count_connections): Call all the callbacks
- in the various modules that have online data and count the number of
- connections.
- (e_summary_add_connections): Make a list of them all.
- (e_summary_set_online): Set the online status for each registered
- module.
- (e_summary_add_online_connection): Register a new module.
-
- * e-summary-offline-handler.[ch]: BonoboXObject implementing the
- GNOME::Evolution::Offline interface.
-
- * e-summary-factory.c (factory_fn): Create an offline handler.
-
- * Makefile.am: Compile e-summary-offline-handler.[ch]
-
-2001-06-30 Zbigniew Chyla <cyba@gnome.pl>
-
- * e-summary-calendar.c (generate_html):
- Marked strings for translation + conversion to utf8.
-
- * e-summary-mail.c
- Added missing #include <config.h>
- (e_summary_mail_generate_html):
- Marked strings for translation + conversion to utf8.
-
- * e-summary-weather.c
- (e_summary_weather_get_html, open_callback):
- Marked strings for translation + conversion to utf8.
- (weather_make_html): Fixed leaks.
-
- * e-summary-rdf.c
- (tree_walk): Fixed leaks.
- (read_callback): Marked strings for translation.
-
-2001-06-29 Iain Holmes <iain@ximian.com>
-
- * e-summary.c (e_summary_draw): Resurrect the hack to stop GtkHTML from
- returning to the top when it's redrawn.
-
-2001-06-29 Iain Holmes <iain@ximian.com>
-
- * e-summary-preferences.c (property_box_destroy_cb): Hook up the saving.
- (str_list_from_vector): Fix memory corruption.
- (e_summary_preferences_save): Write the preferences out to disk.
- I *always* forget that.
-
- * e-summary-mail.c (e_summary_mail_init): Init ->shown to NULL.
-
-2001-06-29 Iain Holmes <iain@ximian.com>
-
- * e-summary-preferences.c: Do everything preferences related.
-
- * my-evolution.glade: Glade file for the preferences box.
-
- * e-summary-calendar.c (e_summary_calendar_reconfigure): Stub for later
-
- * e-summary-calendar.h: Some enums for settings.
-
- * e-summary-mail.c (folder_gen_html): Change the prototype so it
- doesn't work as a hash table foreach function.
- (new_folder_cb): Fix typo in comment :)
- Create a list of folders we display.
- (remove_folder_cb): Remove the folder from the display folder list.
- (maybe_add_to_shown): Hash table foreach function to create a display
- folder list.
- (e_summary_mail_reconfigure): Recreate the mail HTML.
-
- * e-summary-rdf.c (tree_walk): Obey preferences.
- (e_summary_rdf_update): Separate the updating and downloading logic.
- (e_summary_rdf_init): Start an updating timeout.
- (e_summary_rdf_reconfigure): Recreate the RDF html.
-
- * e-summary-weather.c (e_summary_weather_update): Separate the updating
- and downloading logic.
- (e_summary_weather_init): Start timeout.
- (e_summary_weather_code_to_name): Convert code to location name.
- (e_summary_weather_ctree_fill): Fill a CTree with the location data.
- (e_summary_weather_reconfigure): Regenerate the HTML.
-
- * e-summary.c (e_summary_init): Create the preferences.
- (e_summary_reconfigure): Reconfigure the whole summary.
-
- * metar.c: Obey preferences.
-
-2001-06-27 Iain Holmes <iain@ximian.com>
-
- * e-summary-factory.c: Add the pixmaps to the menus.
- Add a new menu item for the configuration stuff.
-
-2001-06-27 Ettore Perazzoli <ettore@ximian.com>
-
- * component-factory.c (factory_fn): Pass NULL as the
- @external_uri_schemas argument to
- `evolution_shell_component_new()'.
-
-2001-06-21 Rodrigo Moya <rodrigo@ximian.com>
-
- * Makefile.am: added libwombat to LDADD
-
-2001-06-15 JP Rosevear <jpr@ximian.com>
-
- * Makefile.am: Get weather.h disted
-
-2001-06-15 JP Rosevear <jpr@ximian.com>
-
- * Makefile.am: Fix includes so that libical need not be installed
-
-2001-06-14 JP Rosevear <jpr@ximian.com>
-
- * Makefile.am: add my-evolution-html.h to the sources
-
-2001-06-13 JP Rosevear <jpr@ximian.com>
-
- * Makefile.am: Make e-summary-type.h a source so it gets disted
-
-2001-06-08 Iain Holmes <iain@ximian.com>
-
- * e-summary.c (e_summary_init): Allow horizontal scrollbars.
-
- * e-summary-weather.c (e_summary_weather_init): Change the name of the
- protocol registered.
- (weather_make_html): Use the weather protocol instead of more.
diff --git a/my-evolution/GNOME_Evolution_Summary.oaf.in b/my-evolution/GNOME_Evolution_Summary.oaf.in
deleted file mode 100644
index dca74ad860..0000000000
--- a/my-evolution/GNOME_Evolution_Summary.oaf.in
+++ /dev/null
@@ -1,71 +0,0 @@
-<oaf_info>
-
- <oaf_server iid="OAFIID:GNOME_Evolution_Summary_ShellComponent"
- type="factory"
- location="OAFIID:GNOME_Evolution_Summary_ShellComponentFactory">
-
- <oaf_attribute name="repo_ids" type="stringv">
- <item value="IDL:GNOME/Evolution/ShellComponent:1.0"/>
- </oaf_attribute>
-
- <oaf_attribute name="description" type="string"
- _value="Evolution Summary component."/>
-
- <oaf_attribute name="evolution:shell-component-icon" type="string"
- value="evolution-today.png"/>
- </oaf_server>
-
- <oaf_server iid="OAFIID:GNOME_Evolution_Summary_ShellComponentFactory"
- type="exe"
- location="evolution-executive-summary">
-
- <oaf_attribute name="repo_ids" type="stringv">
- <item value="IDL:GNOME/GenericFactory:1.0"/>
- </oaf_attribute>
-
- <oaf_attribute name="description" type="string"
- _value="Factory for the Evolution Summary component."/>
-
- </oaf_server>
-
- <oaf_server iid="OAFIID:GNOME_Evolution_Summary_ConfigControlFactory"
- type="exe"
- location="evolution-executive-summary">
-
- <oaf_attribute name="repo_ids" type="stringv">
- <item value="IDL:GNOME/GenericFactory:1.0"/>
- </oaf_attribute>
-
- <oaf_attribute name="description" type="string"
- _value="Factory for Evolution Summary's configuration control."/>
- </oaf_server>
-
- <oaf_server iid="OAFIID:GNOME_Evolution_Summary_ConfigControl"
- type="factory"
- location="OAFIID:GNOME_Evolution_Summary_ConfigControlFactory">
-
- <oaf_attribute name="repo_ids" type="stringv">
- <item value="IDL:GNOME/Evolution/ConfigControl:1.0"/>
- </oaf_attribute>
-
- <oaf_attribute name="evolution:config_item:title" type="string"
- _value="Summary Preferences"/>
-
- <oaf_attribute name="evolution:config_item:description" type="string"
- _value="This page can be used to customize the appearance of the Summary page."/>
-
- <oaf_attribute name="evolution:config_item:icon_name" type="string"
- value="evolution-today.png"/>
-
- <oaf_attribute name="evolution:config_item:priority" type="stringv">
- <item value="summary"/>
- </oaf_attribute>
-
- <oaf_attribute name="evolution:config_item:priority" type="string" value="-5"/>
-
- <oaf_attribute name="description" type="string"
- _value="Configuration control for the Evolution Summary."/>
-
- </oaf_server>
-
-</oaf_info>
diff --git a/my-evolution/GNOME_Evolution_Summary.oaf.in.in b/my-evolution/GNOME_Evolution_Summary.oaf.in.in
deleted file mode 100644
index 4e75f9efb5..0000000000
--- a/my-evolution/GNOME_Evolution_Summary.oaf.in.in
+++ /dev/null
@@ -1,71 +0,0 @@
-<oaf_info>
-
- <oaf_server iid="OAFIID:GNOME_Evolution_Summary_ShellComponent"
- type="factory"
- location="OAFIID:GNOME_Evolution_Summary_ShellComponentFactory">
-
- <oaf_attribute name="repo_ids" type="stringv">
- <item value="IDL:GNOME/Evolution/ShellComponent:1.0"/>
- </oaf_attribute>
-
- <oaf_attribute name="description" type="string"
- _value="Evolution Summary component."/>
-
- <oaf_attribute name="evolution:shell-component-icon" type="string"
- value="evolution-today.png"/>
- </oaf_server>
-
- <oaf_server iid="OAFIID:GNOME_Evolution_Summary_ShellComponentFactory"
- type="@OAF_SHLIB_TYPE@"
- location="@OAF_SHLIB_PREFIX@evolution-executive-summary@OAF_SHLIB_SUFFIX@">
-
- <oaf_attribute name="repo_ids" type="stringv">
- <item value="IDL:GNOME/GenericFactory:1.0"/>
- </oaf_attribute>
-
- <oaf_attribute name="description" type="string"
- _value="Factory for the Evolution Summary component."/>
-
- </oaf_server>
-
- <oaf_server iid="OAFIID:GNOME_Evolution_Summary_ConfigControlFactory"
- type="@OAF_SHLIB_TYPE@"
- location="@OAF_SHLIB_PREFIX@evolution-executive-summary@OAF_SHLIB_SUFFIX@">
-
- <oaf_attribute name="repo_ids" type="stringv">
- <item value="IDL:GNOME/GenericFactory:1.0"/>
- </oaf_attribute>
-
- <oaf_attribute name="description" type="string"
- _value="Factory for Evolution Summary's configuration control."/>
- </oaf_server>
-
- <oaf_server iid="OAFIID:GNOME_Evolution_Summary_ConfigControl"
- type="factory"
- location="OAFIID:GNOME_Evolution_Summary_ConfigControlFactory">
-
- <oaf_attribute name="repo_ids" type="stringv">
- <item value="IDL:GNOME/Evolution/ConfigControl:1.0"/>
- </oaf_attribute>
-
- <oaf_attribute name="evolution:config_item:title" type="string"
- _value="Summary Preferences"/>
-
- <oaf_attribute name="evolution:config_item:description" type="string"
- _value="This page can be used to customize the appearance of the Summary page."/>
-
- <oaf_attribute name="evolution:config_item:icon_name" type="string"
- value="evolution-today.png"/>
-
- <oaf_attribute name="evolution:config_item:priority" type="stringv">
- <item value="summary"/>
- </oaf_attribute>
-
- <oaf_attribute name="evolution:config_item:priority" type="string" value="-5"/>
-
- <oaf_attribute name="description" type="string"
- _value="Configuration control for the Evolution Summary."/>
-
- </oaf_server>
-
-</oaf_info>
diff --git a/my-evolution/Location-translation-script b/my-evolution/Location-translation-script
deleted file mode 100755
index 77c4ddba88..0000000000
--- a/my-evolution/Location-translation-script
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/bash
-
-grep name Locations | cut -b 6- > Locations.h
-grep loc Locations | sed "s/ .... ...... ...$//"| sed "s/ .... :...... ...$//" | cut -d = -f 2 | sed "s/\\\\//g" >> Locations.h
-
-sed -e "s/^/N_(\"/" -e "s/$/\")/" Locations.h > Locations.h.tmp
-sort Locations.h.tmp | uniq > Locations.h
-rm Locations.h.tmp
diff --git a/my-evolution/Locations b/my-evolution/Locations
deleted file mode 100644
index 1d242283df..0000000000
--- a/my-evolution/Locations
+++ /dev/null
@@ -1,3022 +0,0 @@
-[Main]
-regions=US CA MX EU AF OZ ME AS M_ AT
-
-[ME]
-name=Middle East
-states=DZ BH IR KW LB OM QA SA AE YE
-
-[ME_AE]
-name=United Arab Emirates
-loc0=Abu\\ Dhabi\\ -\\ Bateen OMAD ------ ---
-loc1=Abu\\ Dhabi OMAA ------ ---
-loc2=Al\\ Ain OMAL ------ ---
-loc3=Dubai OMDB ------ ---
-loc4=Fujairah OMFJ ------ ---
-loc5=Ras\\ Al\\ Khaimah OMRK ------ ---
-loc6=Sharjah OMSJ ------ ---
-
-[ME_QA]
-name=Qatar
-loc0=Doha OTBD ------ ---
-
-[ME_OM]
-name=Oman
-loc0=Masirah OOMA ------ ---
-loc1=Saiq OOSQ ------ ---
-loc2=Salalah OOSA ------ ---
-loc3=Seeb OOMS ------ ---
-loc4=Thumrait OOTH ------ ---
-
-[ME_YE]
-name=Yemen
-loc0=Aden OYAA ------ ---
-loc1=Hodeidah OYHD ------ ---
-loc2=Marib OYMB ------ ---
-loc3=Sana'A OYSN ------ ---
-loc4=Sayun OYSY ------ ---
-loc5=Socotra OYSQ ------ ---
-loc6=Taiz OYTZ ------ ---
-
-[ME_SA]
-name=Saudi Arabia
-loc0=Abha OEAB ------ ---
-loc1=Al\\ Ahsa OEAH ------ ---
-loc2=Al\\ Baha OEBA ------ ---
-loc3=Al\\ Qaysumah OEPA ------ ---
-loc4=Al-Jouf OESK ------ ---
-loc5=Arar OERR ------ ---
-loc6=Bisha OEBH ------ ---
-loc7=Dawadmi OEDW ------ ---
-loc8=Dhahran OEDR ------ ---
-loc9=Gassim OEGS ------ ---
-loc10=Gizan OEGN ------ ---
-loc11=Guriat OEGT ------ ---
-loc12=Hafr\\ Al-Batin OEKK ------ ---
-loc13=Hail OEHL ------ ---
-loc14=Jeddah\\ King\\ Abdul\\ Aziz\\ International\\ Airport OEJN ------ ---
-loc15=Khamis\\ Mushait OEKM ------ ---
-loc16=King\\ Khaled\\ International\\ Airport OERK ------ ---
-loc17=Madinah OEMA ------ ---
-loc18=Makkah OEMK ------ ---
-loc19=Najran OENG ------ ---
-loc20=Rafha OERF ------ ---
-loc21=Riyadh OERY ------ ---
-loc22=Sharurah OESH ------ ---
-loc23=Tabuk OETB ------ ---
-loc24=Taif OETF ------ ---
-loc25=Turaif OETR ------ ---
-loc26=Wadi\\ Al\\ Dawasser\\ Airport OEWD ------ ---
-loc27=Wejh OEWJ ------ ---
-loc28=Yenbo OEYN ------ ---
-
-[ME_DZ]
-name=Algeria
-loc0=Adrar DAUA ------ ---
-loc1=Annaba DABB ------ ---
-loc2=Constantine DABC ------ ---
-loc3=Dar-El-Beida DAAG ------ ---
-loc4=Ghardaia DAUG ------ ---
-loc5=Hassi-Messaoud DAUH ------ ---
-loc6=In\\ Amenas DAUZ ------ ---
-loc7=Oran/Es\\ Senia DAOO ------ ---
-loc8=Tamanrasset/Aguenna DAAT ------ ---
-loc9=Tebessa DABS ------ ---
-loc10=Tlemcen\\ Zenata DAON ------ ---
-
-[ME_BH]
-name=Bahrain
-loc0=Bahrain OBBI ------ ---
-
-[ME_LB]
-name=Lebanon
-loc0=Beirut OLBA ------ ---
-
-[ME_IR]
-name=Iran, Islamic Republic of
-loc0=Ahwaz OIAW ------ ---
-loc1=Bandarabbass OIKB ------ ---
-loc2=Esfahan OIFM ------ ---
-loc3=Kerman OIKK ------ ---
-loc4=Mashhad OIMM ------ ---
-loc5=Shiraz OISS ------ ---
-loc6=Tabriz OITT ------ ---
-loc7=Tehran-Mehrabad OIII ------ ---
-
-[ME_KW]
-name=Kuwait
-loc0=Kuwait OKBK ------ ---
-
-[US]
-name=United States
-states=AL AK AZ AR CA CO CT DE DC FL GA HI ID IL IN IA KS KY LA ME MA MD MI MS MN MO MT NE NH NM NV NY ND NJ NC OH OK OR PA RI SC SD TN TX UT VT VA WA WI WV WY
-
-[US_AK]
-name=Alaska
-loc0=Adak PADK AKZ020 ---
-loc1=Ambl\\er PAFM AKZ003 ---
-loc2=Anaktuvuk PAKP AKZ001 ---
-loc3=Anchorage PANC AKZ015 ---
-loc4=Anchorage\\ -\\ Elmendorf\\ AFB PAED AKZ015 ---
-loc5=Aniak PANI AKZ010 ---
-loc6=Annette PANT ------ ---
-loc7=Barrow PABR AKZ001 ---
-loc8=Barter\\ Island PABA ------ ---
-loc9=Bethel PABE AKZ010 ---
-loc10=Bettles PABT AKZ004 ---
-loc11=Big\\ River\\ Lake PALV AKZ001 ---
-loc12=Cantwell PATW AKZ004 ---
-loc13=Cape\\ Lisburne PALU ------ ---
-loc14=Cape\\ Newenham PAEH ------ ---
-loc15=Cape\\ Romanzoff PACZ ------ ---
-loc16=Chandalar\\ Lake PALR AKZ004 ---
-loc17=Chulitna PAEC ------ ---
-loc18=Circle\\ City PACR AKZ004 ---
-loc19=Cold\\ Bay PACD AKZ020 ---
-loc20=Cordova PACV AKZ017 ---
-loc21=Dead\\ Horse PASC AKZ001 ---
-loc22=Dillingham PADL AKZ010 ---
-loc23=Dutch\\ Harbor PADU AKZ020 ---
-loc24=Elfin\\ Cove PAEL AKZ022 ---
-loc25=Emmonak PAEM ------ ---
-loc26=Fairbanks PAFA AKZ007 ---
-loc27=Farbanks/Eielson\\ AFB PAEI AKZ007 ---
-loc28=Fort\\ Greely/Allen\\ AAF PABI ------ ---
-loc29=Galbraith\\ Lake PAGB ------ ---
-loc30=Galena PAGA ------ ---
-loc31=Gambell PAGM AKZ006 ---
-loc32=Gulkana PAGK AKZ015 ---
-loc33=Gustavus PAGS AKZ024 ---
-loc34=Haines PAHN AKZ002 ---
-loc35=Hayes\\ River PAHZ ------ ---
-loc36=Healy\\ River PAHV AKZ004 ---
-loc37=Homer PAHO AKZ017 ---
-loc38=Hoonah PAOH AKZ026 ---
-loc39=Iliamna PAIL AKZ010 ---
-loc40=Juneau PAJN AKZ025 ---
-loc41=Kake PAFE AKZ026 ---
-loc42=Kenai PAEN AKZ017 ---
-loc43=Ketchikan PAKT AKZ027 ---
-loc44=King\\ Salmon PAKN AKZ016 ---
-loc45=Klawock PAKW ------ ---
-loc46=Kodiak PADQ AKZ018 ---
-loc47=Kotzebue PAOT AKZ003 ---
-loc48=Lake\\ Hood PALH ------ ---
-loc49=McCarthy PAMX AKZ017 ---
-loc50=McGrath PAMC AKZ004 ---
-loc51=Mekoryuk PAMY AKZ010 ---
-loc52=Merril\\ Field PAMR ------ ---
-loc53=Middleton\\ Island PAMD ------ ---
-loc54=Minchumina PAMH ------ ---
-loc55=Nabesna/Devil\\ Mt. PABN ------ ---
-loc56=Nenana PANN AKZ004 ---
-loc57=Nome PAOM AKZ006 ---
-loc58=Northway PAOR AKZ007 ---
-loc59=Palmer PAAQ AKZ015 ---
-loc60=Paxson PAXK AKZ017 ---
-loc61=Petersburg PAPG AKZ026 ---
-loc62=Point\\ Hope PAPO AKZ001 ---
-loc63=Point\\ Lay PPIZ AKZ001 ---
-loc64=Port\\ Alexander PAAP AKZ026 ---
-loc65=Port\\ Alsworth PALJ ------ ---
-loc66=Port\\ Heiden PAPH AKZ010 ---
-loc67=Puntilla\\ Lake PAPT ------ ---
-loc68=Saint\\ Mary's PASM AKZ010 ---
-loc69=Saint\\ Paul PASN ------ ---
-loc70=Sand\\ Point PASD AKZ020 ---
-loc71=Selanik PASK AKZ003 ---
-loc72=Seward PAWD AKZ017 ---
-loc73=Shishmaref PASH AKZ006 ---
-loc74=Sitka PASI AKZ023 ---
-loc75=Skagway PAGY AKZ026 ---
-loc76=Skwentna PASW AKZ015 ---
-loc77=Slana PADT ------ ---
-loc78=Snowshoe\\ Lake PALK ------ ---
-loc79=Soldotna PASX AKZ017 ---
-loc80=Sparrevohn PASV ------ ---
-loc81=Sutton PAJV ------ ---
-loc82=Talkeetna PATK AKZ015 ---
-loc83=Tanana PATA AKZ004 ---
-loc84=Tatalina PATL ------ ---
-loc85=Tin\\ City PATC ------ ---
-loc86=Togiak\\ Village PATG AKZ010 ---
-loc87=Umiat PAUM AKZ001 ---
-loc88=Unalakleet PAUN AKZ006 ---
-loc89=Valdez\\ 2 PAVD AKZ017 ---
-loc90=Wainwright PAFB AKZ001 ---
-loc91=Whittier PAWR AKZ015 ---
-loc92=Willow\\ Airport PAUO AKZ015 ---
-loc93=Wrangell PAWG AKZ026 ---
-loc94=Yakutat PAYA AKZ022 ---
-
-[US_AR]
-name=Arkansas
-loc0=Batesville KBVX ARZ016 ---
-loc1=Bentonville KVBT ARZ001 ---
-loc2=El\\ Dorado KELD ARZ073 ---
-loc3=Fayetteville KFYV ARZ010 085
-loc4=Flippin KFLP ARZ004 ---
-loc5=Fort\\ Smith KFSM ------ 085
-loc6=Harrison KHRO ARZ003 085
-loc7=Hot\\ Springs KHOT ARZ042 ---
-loc8=Jonesboro KJBR ARZ026 085
-loc9=Little\\ Rock KLIT ARZ044 ---
-loc10=Little\\ Rock\\ AFB KLRF ARZ044 ---
-loc11=Pine\\ Bluff KPBF ARZ056 ---
-loc12=Rogers KROG ARZ001 ---
-loc13=Siloam\\ Springs KSLG ARZ001 ---
-loc14=Stuttgart KSGT ARZ057 ---
-loc15=Texarkana KTXK ARZ070 ---
-loc16=Walnut\\ Ridge KARG ARZ017 ---
-
-[US_DC]
-name=District of Columbia
-loc0=Washington/Dulles KIAD DCZ013 dca
-loc1=Washington KDCA DCZ013 dca
-
-[US_ID]
-name=Idaho
-loc0=Boise KBOI IDZ014 ---
-loc1=Burley KBYI IDZ022 ---
-loc2=Challis KU15 IDZ018 ---
-loc3=Coeur\\ d'Alene KCOE IDZ002 ---
-loc4=Elk\\ City KP69 IDZ006 ---
-loc5=Grangeville KS80 IDZ007 ---
-loc6=Hailey-Sun\\ Valley KSUN IDZ018 ---
-loc7=Idaho\\ Falls KIDA IDZ020 ---
-loc8=Lewiston KLWS IDZ003 ---
-loc9=Malad\\ City KMLD IDZ022 ---
-loc10=Malta K77M IDZ022 ---
-loc11=McCall KMYL IDZ011 ---
-loc12=Mountain\\ Home KMUO IDZ014 ---
-loc13=Mullan KS06 IDZ004 ---
-loc14=Pocatello KPIH IDZ021 ---
-loc15=Salmon KSMN IDZ009 ---
-loc16=Salmon\\ (2) K27U IDZ009 ---
-loc17=Soda\\ Springs KU78 IDZ023 ---
-loc18=Strevell K4SV ------ ---
-loc19=Twin\\ Falls KTWF IDZ015 ---
-
-[US_IA]
-name=Iowa
-loc0=Algona KAXA IAZ005 043
-loc1=Ames KAMW IAZ048 043
-loc2=Atlantic KAIO IAZ070 ---
-loc3=Boone KBNW IAZ047 ---
-loc4=Burlington KBRL IAZ089 058
-loc5=Carroll KCIN IAZ045 ---
-loc6=Cedar\\ Rapids KCID IAZ052 ---
-loc7=Chariton KCNC IAZ084 ---
-loc8=Charles\\ City KCCY IAZ018 ---
-loc9=Clarinda KICL IAZ091 ---
-loc10=Clarion KCAV IAZ025 ---
-loc11=Clinton KCWI IAZ066 ---
-loc12=Council\\ Bluffs KCBF IAZ069 ---
-loc13=Creston KCSQ IAZ082 ---
-loc14=Davenport KDVN IAZ068 ---
-loc15=Decorah KDEH IAZ010 ---
-loc16=Denison KDNS IAZ044 ---
-loc17=Des\\ Moines KDSM IAZ060 057
-loc18=Dubuque KDBQ IAZ042 ---
-loc19=Estherville KEST IAZ004 ---
-loc20=Fairfield KFFL IAZ087 ---
-loc21=Fort\\ Dodge KFOD IAZ035 043
-loc22=Fort\\ Madison KFSW IAZ099 ---
-loc23=Iowa\\ City KIOW IAZ064 ---
-loc24=Keokuk KEOK ------ ---
-loc25=Knoxville KOXV ------ ---
-loc26=Lamoni K0Y7 IAZ094 057
-loc27=Le\\ Marine KLRJ ------ ---
-loc28=Marshalltown KMIW IAZ049 ---
-loc29=Mason\\ City KMCW IAZ017 044
-loc30=Monticello KMXO IAZ053 ---
-loc31=Muscatine KMUT IAZ067 ---
-loc32=Newton KTNU IAZ061 ---
-loc33=Oelwen KOLZ IAZ029 ---
-loc34=Orange\\ City KORC IAZ012 ---
-loc35=Ottumwa KOTM IAZ086 058
-loc36=Red\\ Oak KRDK IAZ080 ---
-loc37=Sheldon KSHL IAZ012 ---
-loc38=Shenandoah KSDA IAZ091 ---
-loc39=Sioux\\ City KSUX IAZ031 043
-loc40=Spencer KSPW IAZ014 043
-loc41=Storm\\ Lake KSLB IAZ022 ---
-loc42=Washington KAWG IAZ077 ---
-loc43=Waterloo KALO IAZ039 044
-loc44=Webster\\ City KEBS ------ ---
-
-[US_KS]
-name=Kansas
-loc0=Chanute KCNU KSZ096 084
-loc1=Concordia KCNK KSZ020 071
-loc2=Dodge\\ City KDDC KSZ078 070
-loc3=Elkhart K1K5 KSZ084 ---
-loc4=Emporia KEMP KSZ054 071
-loc5=Fort\\ Riley KFRI KSZ036 ---
-loc6=Garden\\ City KGCK KSZ063 070
-loc7=Goodland KGLD KSZ013 070
-loc8=Hays KHYS KSZ031 ---
-loc9=Hill\\ City KHLC KSZ016 070
-loc10=Hutchinson KHUT KSZ067 084
-loc11=Liberal KLBL KSZ086 ---
-loc12=Manhattan KMHK KSZ022 071
-loc13=Medicine\\ Lodge KP28 KSZ090 ---
-loc14=Olathe KOJC KSZ105 071
-loc15=Olathe/Ind. KIXD KSZ105 071
-loc16=Russell KRSL KSZ032 070
-loc17=Salina KSLN KSZ049 071
-loc18=Topeka KTOP KSZ039 071
-loc19=Topeka-Forbes\\ Field KFOE KSZ039 071
-loc20=Wichita KICT KSZ083 084
-loc21=Wichita-Jabara K3KM KSZ083 084
-loc22=Wichita-McConnell\\ AFB KIAB KSZ083 084
-
-[US_KY]
-name=Kentucky
-loc0=Bowling\\ Green KBWG KYZ071 087
-loc1=Covington KCVG KYZ092 074
-loc2=Fort\\ Campbell KHOP KYZ017 ---
-loc3=Fort\\ Knox KFTK KYZ028 ---
-loc4=Frankfort KFFT KYZ035 ---
-loc5=Henderson KEHR KYZ018 ---
-loc6=Jackson KJKL KYZ112 087
-loc7=Lexington KLEX KYZ041 074
-loc8=London KLOZ ------ 087
-loc9=Louisville KLOU KYZ030 073
-loc10=Louisville-Standiford\\ Field KSDF KYZ030 073
-loc11=Owensboro KOWB KYZ019 086
-loc12=Paducah KPAH KYZ005 ---
-loc13=Pikeville K5I3 KYZ120 ---
-loc14=Somerset KSME KYZ079 ---
-
-[US_LA]
-name=Lousiana
-loc0=Alexandria KAEX LAZ028 115
-loc1=Alexandria-Esler KESF LAZ028 115
-loc2=Amelia K7R3 ------ ---
-loc3=Barksdale KBAD ------ ---
-loc4=Baton\\ Rouge KBTR LAZ048 121
-loc5=Cameron K7R5 LAZ051 ---
-loc6=Fort\\ Polk-Leesville KPOE LAZ027 115
-loc7=Fourchon K9F2 ------ ---
-loc8=Grand\\ Isle KAXO LAZ061 ---
-loc9=Houma KHUM LAZ066 ---
-loc10=Intracoastal K7R4 LAZ052 ---
-loc11=Lafayette KLFT LAZ044 121
-loc12=Lake\\ Charles KLCH LAZ041 121
-loc13=Monroe KMLU LAZ014 ---
-loc14=New\\ Iberia KARA LAZ053 ---
-loc15=New\\ Orleans KMSY LAZ062 121
-loc16=New\\ Orleans\\ NAS KNBG LAZ062 121
-loc17=New\\ Orleans-Lakefront KNEW LAZ062 121
-loc18=Patterson KPTN ------ ---
-loc19=Salt\\ point KP92 ------ ---
-loc20=Shreveport\\ Downtown KDTN LAZ001 107
-loc21=Shreveport\\ Regional KSHV LAZ001 107
-loc22=South\\ Marsh\\ Island K7R8 LAZ053 ---
-loc23=South\\ Timbalier KS58 ------ ---
-loc24=Venice K7R1 ------ 121
-loc25=Vermillion K9R9 ------ ---
-loc26=Vicksburg KTVR ------ ---
-
-[US_ME]
-name=Maine
-loc0=Augusta KAUG MEZ021 034
-loc1=Bangor KBGR MEZ015 034
-loc2=Bar\\ Harbor KBHB MEZ029 ---
-loc3=Brunswick KNHZ MEZ024 049
-loc4=Caribou KCAR MEZ002 ---
-loc5=Clayton\\ Lake K40B ------ ---
-loc6=Frenchville KFVE MEZ002 ---
-loc7=Fryeburg KIZG ------ ---
-loc8=Greenville K3B1 MEZ010 034
-loc9=Houlton KHUL MEZ002 ---
-loc10=Lewiston KLEW MEZ020 ---
-loc11=Millinocket KMLT MEZ015 ---
-loc12=Portland KPWM MEZ024 049
-loc13=Presque\\ Isle KPQI MEZ002 ---
-loc14=Rockland KRKD MEZ027 ---
-loc15=Sanford KSFM MEZ023 ---
-loc16=Turin K3B5 ------ ---
-loc17=Waterville KWVL MEZ021 ---
-loc18=Wiscasset KIWI MEZ026 ---
-
-[US_MS]
-name=Mississippi
-loc0=Columbus KGTR MSZ031 109
-loc1=Columbus-W\\ Point-Starkville KCBM MSZ031 109
-loc2=Greenville KGLH ------ 108
-loc3=Greenwood KGWO MSZ025 108
-loc4=Gulfport KGPT MSZ081 ---
-loc5=Jackson KJAN MSZ048 108
-loc6=Laurel KPIB MSZ066 ---
-loc7=McComb KMCB MSZ070 ---
-loc8=Meridian KMEI MSZ052 109
-loc9=Meridian-Lauderdale KNMM MSZ052 109
-loc10=Natchez KHEZ MSZ060 ---
-loc11=Tupelo KTUP MSZ016 098
-loc12=Vicksburg KTVR MSZ047 ---
-
-[US_MO]
-name=Missouri
-loc0=Cape\\ Girardeau KCGI MOZ087 ---
-loc1=Columbia KCOU MOZ041 072
-loc2=Fort\\ Leonard KTBN MOZ070 072
-loc3=Grandview KGVW MOZ037 ---
-loc4=Jefferson\\ City KJEF MOZ048 072
-loc5=Joplin KJLN MOZ088 084
-loc6=Kansas\\ City KMKC MOZ037 071
-loc7=Kansas\\ City-Gladstone KMCI MOZ029 071
-loc8=Kirksville KIRK MOZ017 058
-loc9=Poplar\\ Bluff KP02 MOZ109 ---
-loc10=Sedalia KSZL MOZ045 ---
-loc11=Spickard KP35 MOZ015 ---
-loc12=Springfield KSGF MOZ095 084
-loc13=St\\ Joseph KSTJ MOZ020 057
-loc14=St\\ Louis KSTL MOZ064 stl
-loc15=St\\ Louis-Spirit KSUS MOZ064 stl
-loc16=Vichy-Rolla KVIH MOZ058 072
-
-[US_MT]
-name=Montana
-loc0=Billings KBIL MTZ035 ---
-loc1=Bozeman KBZN MTZ015 013
-loc2=Broadus K4BQ MTZ036 ---
-loc3=Butte KBTM MTZ007 013
-loc4=Cut\\ Bank KCTB MTZ010 004
-loc5=Dillon KDLN MTZ008 025
-loc6=Drummond K3DU MTZ006 013
-loc7=Glasgow KGGW MTZ017 ---
-loc8=Glendive KGDV MTZ025 ---
-loc9=Great\\ Falls KGFA MTZ012 004
-loc10=Harlowton K3HT MTZ028 ---
-loc11=Havre KHVR MTZ011 004
-loc12=Helena KHLN MTZ014 013
-loc13=Jordan KJDN MTZ022 ---
-loc14=Kalispell KFCA MTZ003 004
-loc15=Lewistown KLWT MTZ013 013
-loc16=Livingston KLVM MTZ028 013
-loc17=Miles\\ City KMLS MTZ032 ---
-loc18=Missoula KMSO MTZ005 013
-loc19=Monida KMQM ------ ---
-loc20=Sidney KSDY MTZ024 ---
-loc21=Thompson\\ Falls K3TH MTZ004 ---
-loc22=West\\ Yellowstone KWYS MTZ015 025
-loc23=West\\ Yellowstone\\ (2) KWEY MTZ015 025
-loc24=Wolf\\ Point KOLF MTZ020 ---
-
-[US_NE]
-name=Nebraska
-loc0=Ainsworth KANW NEZ008 042
-loc1=Alliance KAIA NEZ003 ---
-loc2=Beatrice KBIE NEZ089 057
-loc3=Broken\\ Bow KBBW NEZ038 056
-loc4=Burwell KK20 ------ ---
-loc5=Chadron KCDR NEZ002 041
-loc6=Columbus KOLU NEZ042 ---
-loc7=Falls\\ City KFNB NEZ093 057
-loc8=Grand\\ Island KGRI NEZ062 056
-loc9=Hastings KHSI NEZ075 056
-loc10=Imperial KIML NEZ069 055
-loc11=Imperial\\ (2) K6V1 NEZ069 055
-loc12=Kearney KEAR NEZ061 ---
-loc13=Lincoln KLNK NEZ066 057
-loc14=McCook KMCK NEZ081 056
-loc15=Mullen KMHN NEZ007 042
-loc16=Norfolk KOFK NEZ031 042
-loc17=North\\ Platte KLBF NEZ059 ---
-loc18=O'Neill KONL NEZ010 042
-loc19=Omaha KOMA NEZ052 057
-loc20=Omaha-Bellevue KOFF NEZ052 057
-loc21=Ord-Sharp KODX NEZ039 ---
-loc22=Scottsbluff KBFF NEZ019 041
-loc23=Sidney KSNY NEZ055 055
-loc24=Valentine KVTN NEZ005 042
-
-[US_NH]
-name=New Hampshire
-loc0=Berlin KBML NHZ002 034
-loc1=Concord KCON NHZ008 049
-loc2=Jaffrey KAFN NHZ011 ---
-loc3=Keene KEEN NHZ011 049
-loc4=Laconia KLCI NHZ009 049
-loc5=Lebanon KLEB NHZ003 049
-loc6=Manchester KMHT NHZ012 049
-loc7=Mt\\ Washington KMWN ------ 034
-loc8=Nashua KASH NHZ012 ---
-loc9=North\\ Conway KCWN ------ ---
-loc10=Portsmouth KPSM NHZ013 049
-loc11=Whitefield KHIE ------ ---
-
-[US_NM]
-name=New Mexico
-loc0=Alamogordo KHMN NMZ024 ---
-loc1=Albuquerque KABQ NMZ009 abq
-loc2=Carlsbad KCNM NMZ028 ---
-loc3=Clayton KCAO NMZ007 ---
-loc4=Clovis-Cannon\\ AFB KCVS NMZ021 ---
-loc5=Corona K4CR NMZ016 ---
-loc6=Cuba\\ Awrs K4SL NMZ002 ---
-loc7=Deming KDMN NMZ031 ---
-loc8=Farmington KFMN NMZ001 081
-loc9=Gallup KGUP NMZ008 093
-loc10=Grants KGNT NMZ008 093
-loc11=Hobbs KHOB NMZ029 ---
-loc12=Las\\ Vegas KLVS NMZ005 abq
-loc13=Los\\ Alamos KLAM NMZ002 081
-loc14=Moriarty K4MY NMZ011 ---
-loc15=Roswell KROW NMZ019 ---
-loc16=Ruidoso-Sierra\\ Blanca KRUI NMZ016 ---
-loc17=Santa\\ Fe KSAF NMZ011 abq
-loc18=Silver\\ City KSVC NMZ022 ---
-loc19=Socorro KONM NMZ015 ---
-loc20=Taos KE23 NMZ004 ---
-loc21=Truth\\ or\\ Consequences KTCS NMZ023 ---
-loc22=Tucumcari KTCC NMZ013 ---
-loc23=Zuni\\ Pueblo KZUN ------ ---
-
-[US_ND]
-name=North Dakota
-loc0=Bismark KBIS NDZ035 016
-loc1=Devils\\ Lake KDVL NDZ015 007
-loc2=Devils\\ Lake\\ (2) KP11 NDZ015 007
-loc3=Dickinson KDIK NDZ033 015
-loc4=Fargo KFAR NDZ039 ---
-loc5=Grand\\ Forks KGFK NDZ027 007
-loc6=Jamestown KJMS NDZ037 016
-loc7=Lidgerwood KP67 NDZ053 ---
-loc8=Minot KMOT NDZ011 007
-loc9=Minot\\ AFB KMIB NDZ011 007
-loc10=Roseglen KP24 NDZ021 ---
-loc11=Williston KISN NDZ009 006
-
-[US_OK]
-name=Oklahoma
-loc0=Altus KLTS OKZ036 ---
-loc1=Ardmore KADM OKZ046 ---
-loc2=Bartlesville KBVO OKZ054 084
-loc3=Clinton KCSM OKZ016 ---
-loc4=Enid KEND OKZ012 ---
-loc5=Enid/Woodring KWDG OKZ012 084
-loc6=Fort\\ Sill KFSI OKZ038 ---
-loc7=Gage KGAG OKZ009 ---
-loc8=Guymon KGUY ------ 082
-loc9=Hobart KHBR OKZ035 095
-loc10=Lawton KLAW OKZ038 ---
-loc11=McAlester KMLC OKZ073 ---
-loc12=Oklahoma\\ City KOKC OKZ025 095
-loc13=Oklahoma\\ City-Bethany KPWA OKZ025 095
-loc14=Oklahoma\\ City-Midwest\\ City KTIK OKZ025 095
-loc15=Page KPGO OKZ076 ---
-loc16=Ponca\\ City KPNC OKZ008 084
-loc17=Stillwater KSWO OKZ020 084
-loc18=Tulsa KTUL OKZ060 084
-
-[US_SD]
-name=South Dakota
-loc0=Aberdeen KABR SDZ006 ---
-loc1=Brookings KBKX SDZ040 ---
-loc2=Chamberlain K9V9 SDZ057 ---
-loc3=Custer K0V1 SDZ029 ---
-loc4=Huron KHON SDZ038 028
-loc5=Lemmon KY22 SDZ002 ---
-loc6=Mitchell KMHE SDZ059 028
-loc7=Mobridge KY26 SDZ009 028
-loc8=Philip KPHP SDZ032 028
-loc9=Pierre KPIR SDZ035 028
-loc10=Rapid\\ City KRAP SDZ031 027
-loc11=Rapid\\ City-Ellsworth\\ AFB KRCA SDZ031 027
-loc12=Redig KREJ SDZ001 ---
-loc13=Sioux\\ Falls KFSD SDZ062 043
-loc14=Watertown KATY SDZ020 ---
-loc15=Yankton KYKN SDZ069 043
-
-[US_UT]
-name=Utah
-loc0=Blanding K4BL UTZ022 067
-loc1=Bryce\\ Canyon KBCE UTZ020 080
-loc2=Bullfrog KU17 UTZ021 ---
-loc3=Cedar\\ City KCDC UTZ016 080
-loc4=Delta KU24 UTZ015 ---
-loc5=Dugway KDPG UTZ005 slc
-loc6=Eagle\\ Range KU16 ------ ---
-loc7=Green\\ River KU28 UTZ013 ---
-loc8=Hanksville K4HV UTZ013 067
-loc9=Logan KLGU UTZ001 ---
-loc10=Milford KMLF UTZ016 ---
-loc11=Ogden KOGD UTZ002 slc
-loc12=Ogden-Hill\\ AFB KHIF UTZ002 slc
-loc13=Price-Carbon KPUC UTZ012 067
-loc14=Provo KPVU UTZ004 slc
-loc15=Roosevelt KU67 UTZ011 ---
-loc16=St.\\ George KSGU UTZ019 080
-loc17=Salt\\ Lake\\ City KSLC UTZ003 slc
-loc18=Vernal KVEL UTZ024 ---
-loc19=Wendover KENV UTZ005 slc
-
-[US_VT]
-name=Vermont
-loc0=Ball\\ Mountain K8B3 ------ ---
-loc1=Burlington KBTV VTZ005 ---
-loc2=Canaan KVT1 ------ ---
-loc3=Enosburg\\ Falls K3B8 ------ ---
-loc4=Montpelier KMPV VTZ008 034
-loc5=Newport KNPV VTZ003 034
-loc6=Pownal K5B5 ------ ---
-loc7=Rutland KRUT VTZ011 ---
-loc8=Springfield KVSF VTZ012 ---
-loc9=St\\ Johnsbury K9B2 VTZ007 ---
-loc10=Waterbury K5B1 ------ ---
-loc11=West\\ Burke KVT2 ------ ---
-loc12=Wilmington K0B0 VTZ014 049
-
-[US_WY]
-name=Wyoming
-loc0=Big\\ Piney KBPI WYZ020 ---
-loc1=Casper KCPR WYZ064 ---
-loc2=Cheyenne KCYS WYZ069 ---
-loc3=Cody KCOD WYZ002 026
-loc4=Douglas K4DG WYZ059 ---
-loc5=Evanston KEVW WYZ021 ---
-loc6=Gillette KGCC WYZ054 026
-loc7=Jackson KJAC WYZ006 ---
-loc8=Lander KLND WYZ012 040
-loc9=Laramie KLAR WYZ066 ---
-loc10=Rawlins KRWL WYZ061 040
-loc11=Riverton KRIW WYZ013 040
-loc12=Rock\\ Springs KRKS WYZ022 ---
-loc13=Sheridan KSHR WYZ099 ---
-loc14=Worland KWRL WYZ009 026
-loc15=Yellowstone KP60 WYZ001 ---
-
-
-[US_PA]
-name=Pennsylvania
-loc0=Allentown KABE PAZ061 062
-loc1=Altoona KAOO PAZ025 061
-loc2=Bradford KBFD PAZ005 047
-loc3=Du\\ Bois KDUJ PAZ017 061
-loc4=Erie KERI PAZ002 047
-loc5=Franklin KFKL PAZ008 061
-loc6=Harrisburg KCXY PAZ057 062
-loc7=Johnstown KJST PAZ024 pit
-loc8=Lancaster KLNS PAZ066 phl
-loc9=Latrobe KLBE PAZ030 pit
-loc10=Middletown KMDT PAZ057 062
-loc11=Muir KMUI PAZ058 062
-loc12=Northeast\\ Philadelphia KPNE PAZ071 phl
-loc13=Philadelphia KPHL PAZ071 phl
-loc14=Philipsburg KPSB PAZ019 061
-loc15=Pittsburgh KPIT PAZ021 pit
-loc16=Pittsburgh-West\\ Mifflin KAGC PAZ021 pit
-loc17=Reading KRDG PAZ060 phl
-loc18=Scranton KAVP PAZ047 062
-loc19=State\\ College KUNV PAZ019 061
-loc20=Wilkes\\ -\\ Barre KAVP PAZ047 062
-loc21=Williamsport KIPT PAZ046 062
-
-[US_CA]
-name=California
-loc0=Alturas KS11 CAZ012 ---
-loc1=Arcata KACV CAZ001 ---
-loc2=Avalon KAVX ------ ---
-loc3=Bakersfield KBFL CAZ021 ---
-loc4=Beaumont KBUO CAZ056 ---
-loc5=Bicycle\\ Lake KBYS ------ ---
-loc6=Bishop KBIH CAZ026 ---
-loc7=Blue\\ Canyon KBLU ------ ---
-loc8=Blythe KBLH CAZ031 ---
-loc9=Burbank KBUR CAZ047 ---
-loc10=Camarillo KCMA CAZ040 ---
-loc11=Campo KCZZ CAZ058 ---
-loc12=Carlsbad KCRQ CAZ043 ---
-loc13=Chico KCIC CAZ016 ---
-loc14=China\\ Lake KNID CAZ028 ---
-loc15=Chino KCNO CAZ048 ---
-loc16=Concord KCCR CAZ007 ---
-loc17=Crescent\\ City KCEC CAZ001 ---
-loc18=Daggett KDAG CAZ028 ---
-loc19=Edwards\\ AFB KEDW CAZ025 ---
-loc20=El\\ Centro KNJK CAZ033 ---
-loc21=El\\ Monte KEMT CAZ047 ---
-loc22=Fairfield KSUU CAZ018 ---
-loc23=Fresno KFAT CAZ020 078
-loc24=Fresno-Chandler KFCH CAZ020 078
-loc25=Fullerton KFUL CAZ042 ---
-loc26=Hawthorne KHHR CAZ041 ---
-loc27=Hayward KHWD CAZ007 ---
-loc28=Imperial KIPL CAZ033 ---
-loc29=Imperial\\ Beach KNRS CAZ043 ---
-loc30=Inyokern KIYK CAZ025 ---
-loc31=La\\ Verne KPOC CAZ047 ---
-loc32=Lake\\ Tahoe KTVL CAZ072 ---
-loc33=Lancaster KWJF CAZ059 ---
-loc34=Lemoore KNLC CAZ021 ---
-loc35=Livermore KLVK CAZ007 ---
-loc36=Lompoc KLPC CAZ035 ---
-loc37=Long\\ Beach KLGB CAZ041 lax
-loc38=Los\\ Angeles KLAX CAZ041 lax
-loc39=Mammoth\\ Lakes KMMH CAZ073 ---
-loc40=Marysville KMYV CAZ016 ---
-loc41=Marysville-Beale\\ AFB KBAB CAZ016 ---
-loc42=McClellan KMCC ------ ---
-loc43=Merced KMCE CAZ020 ---
-loc44=Modesto KMOD CAZ019 ---
-loc45=Mojave KMHV CAZ024 ---
-loc46=Montague KSIY CAZ011 ---
-loc47=Monterey KMRY CAZ009 ---
-loc48=Mount\\ Shasta KMHS CAZ011 ---
-loc49=Mount\\ Wilson KMWS CAZ047 ---
-loc50=Mountain\\ View KNUQ CAZ006 sfo
-loc51=Napa KAPC CAZ064 ---
-loc52=Needles KEED CAZ029 ---
-loc53=Oakland KOAK CAZ007 sfo
-loc54=Oceanside KNFG CAZ043 ---
-loc55=Ontario KONT CAZ048 lax
-loc56=Oxnard KOXR CAZ040 ---
-loc57=Palm\\ Springs KPSP CAZ061 ---
-loc58=Palmdale KPMD CAZ054 ---
-loc59=Palo\\ Alto KPAO CAZ006 sfo
-loc60=Paso\\ Robles KPRB CAZ037 ---
-loc61=Point\\ Mugu KNTD ------ ---
-loc62=Point\\ Piedras\\ Blanca K87Q ------ ---
-loc63=Porterville KPTV CAZ021 ---
-loc64=Red\\ Bluff KRBL CAZ015 ---
-loc65=Redding KRDD CAZ013 ---
-loc66=Riverside KRAL CAZ048 ---
-loc67=Riverside/March\\ AFB KRIV CAZ061 ---
-loc68=Sacramento KSAC CAZ017 ---
-loc69=Sacramento-Woodland KSMF CAZ017 ---
-loc70=Salinas KSNS CAZ009 ---
-loc71=San\\ Carlos KSQL CAZ006 ---
-loc72=San\\ Diego KSAN CAZ043 san
-loc73=San\\ Diego-Santee KSEE CAZ050 san
-loc74=San\\ Diego-Brown KSDM CAZ050 san
-loc75=San\\ Diego-Miramar KNKX CAZ043 san
-loc76=San\\ Diego-Montgomery KMYF CAZ043 san
-loc77=San\\ Diego-North\\ Island KNZY ------ san
-loc78=San\\ Francisco KSFO CAZ006 sfo
-loc79=San\\ Jose-Santa\\ Clara KSJC CAZ008 sfo
-loc80=San\\ Luis\\ Obispo KSBP CAZ034 ---
-loc81=San\\ Nicholas\\ Island KNSI CAZ039 ---
-loc82=Sandberg KSDB ------ ---
-loc83=Santa\\ Ana KSNA CAZ042 lax
-loc84=Santa\\ Barbara KSBA CAZ039 lax
-loc85=Santa\\ Maria KSMX CAZ035 090
-loc86=Santa\\ Monica KSMO CAZ041 ---
-loc87=Santa\\ Rosa KSTS CAZ005 ---
-loc88=Shelter\\ Cove KO87 CAZ001 ---
-loc89=Stockton KSCK CAZ019 ---
-loc90=Tahoe\\ Valley KTVL ------ ---
-loc91=Torrance KTOA CAZ042 lax
-loc92=Truckee KTRK CAZ072 ---
-loc93=Twentynine\\ Palms KNXP CAZ028 ---
-loc94=Ukiah KUKI CAZ003 ---
-loc95=Van\\ Nuys KVNY CAZ047 ---
-loc96=Vandenberg\\ AFB KVBG CAZ039 ---
-loc97=Vandenberg\\ Range KVBG CAZ039 ---
-loc98=Visalia KVIS CAZ021 ---
-
-[US_AL]
-name=Alabama
-loc0=Anniston KANB ALZ019 ---
-loc1=Auburn KAUO ALZ047 ---
-loc2=Birmingham KBHM ALZ024 019
-loc3=Decatur KDCU ------ ---
-loc4=Dothan KDHN ALZ066 ---
-loc5=Evergreen KGZH ------ ---
-loc6=Gadsden KGAD ALZ018 ---
-loc7=Huntsville KHSV ALZ006 ---
-loc8=Mobile\\ Regional\\ Airport KMOB ALZ061 ---
-loc9=Mobile\\ Downtown KBFM ALZ061 ---
-loc10=Montgomery KMGM ALZ044 109
-loc11=Montgomery-Maxwell\\ AFB KMXF ALZ044 109
-loc12=Muscle\\ Shoals KMSL ALZ002 ---
-loc13=Ozark KOZR ALZ066 ---
-loc14=Tuscaloosa KTCL ALZ023 ---
-
-[US_AZ]
-name=Arizona
-loc0=Casa\\ Granda KCGZ AZZ028 ---
-loc1=Chandler KIWA AZZ015 ---
-loc2=Douglas KDUG AZZ030 ---
-loc3=Flagstaff KFLG AZZ015 092
-loc4=Fort\\ Huachuca KFHU AZZ035 ---
-loc5=Gila\\ Bend KGBN AZZ027 ---
-loc6=Grand\\ Canyon KGCN AZZ006 ---
-loc7=Kingman KIGM AZZ003 ---
-loc8=Mesa-Falcon\\ Field KFFZ AZZ023 ---
-loc9=Nogales K13A AZZ034 ---
-loc10=Page KPGA AZZ005 ---
-loc11=Payson K0E4 AZZ018 ---
-loc12=Phoenix KPHX AZZ023 phx
-loc13=Phoenix-Deer\\ Valley KDVT AZZ023 phx
-loc14=Phoenix-Goodyear KGYR AZZ023 phx
-loc15=Phoenix-Luke\\ AFB KLUF AZZ023 phx
-loc16=Prescott KPRC AZZ008 ---
-loc17=Safford-Municipal\\ Airport KSAD AZZ030 ---
-loc18=Scottsdale KSDL AZZ023 ---
-loc19=Show\\ Low KSOW AZZ017 ---
-loc20=Tucson KTUS AZZ033 103
-loc21=Tucson-Davis\\ AFB KDMA AZZ033 103
-loc22=Winslow KINW AZZ013 ---
-loc23=Yuma\\ MCAS KNYL AZZ025 ---
-
-[US_CO]
-name=Colorado
-loc0=Air\\ Force KAFF COZ071 ---
-loc1=Akron KAKO COZ049 ---
-loc2=Alamosa KALS COZ063 ---
-loc3=Aspen KASE COZ010 068
-loc4=Colorado\\ Springs KCOS COZ071 ---
-loc5=Cortez KCEZ COZ021 ---
-loc6=Craig KCAG COZ002 ---
-loc7=Denver KDEN COZ040 den
-loc8=Denver-Aurora KAPA COZ040 den
-loc9=Denver-Broomfield KBKF COZ040 den
-loc10=Denver-Cherry\\ Knolls KBJC COZ040 den
-loc11=Durango KDRO COZ022 ---
-loc12=Durango\\ Awrs K4V5 COZ022 ---
-loc13=Eagle KEGE COZ010 ---
-loc14=Fort\\ Carson KFCS COZ071 ---
-loc15=Fort\\ Collins KFCL COZ035 ---
-loc16=Fort\\ Collins/Lovel KFNL COZ035 ---
-loc17=Grand\\ Junction KGJT COZ006 ---
-loc18=Greeley KGXY COZ043 ---
-loc19=Gunnison KGUC COZ012 ---
-loc20=Gunnison\\ (2) K2V9 COZ012 ---
-loc21=Hayden KHDN COZ005 ---
-loc22=La\\ Junta KLHX COZ076 ---
-loc23=Lamar K4LJ COZ080 ---
-loc24=Leadville KLXV COZ012 ---
-loc25=Limon KLIC COZ047 ---
-loc26=Montrose KMTJ COZ017 ---
-loc27=Montrose\\ (2) K6V8 COZ017 ---
-loc28=Pueblo KPUB COZ073 ---
-loc29=Rifle K1V1 COZ003 ---
-loc30=Salida KS29 COZ069 ---
-loc31=Salida-Harriet K0V2 COZ069 ---
-loc32=Steamboat\\ Springs KSBS COZ005 ---
-loc33=Trinidad KTAD COZ077 ---
-loc34=Winter\\ Park KC96 COZ033 ---
-
-[US_CT]
-name=Connecticut
-loc0=Bridgeport KBDR CTZ009 hfd
-loc1=Danbury KDXR CTZ009 ---
-loc2=Groton KGON CTZ012 hfd
-loc3=Hartford KHFD CTZ002 hfd
-loc4=New\\ Haven KHVN CTZ010 ---
-loc5=Oxford KOXC CTZ010 ---
-loc6=Windsor\\ Locks KBDL CTZ002 ---
-
-[US_DE]
-name=Delaware
-loc0=Dover KDOV DEZ002 076
-loc1=Wilmington KILG DEZ001 076
-
-[US_FL]
-name=Florida
-loc0=Apalachicola KAQQ FLZ015 ---
-loc1=Bartow KBOW ------ ---
-loc2=Brooksville KBKV FLZ048 ---
-loc3=Cecil\\ NAS KNZC FLZ025 ---
-loc4=Cocoa\\ Beach KCOF FLZ047 ---
-loc5=Crestview KCEW FLZ006 ---
-loc6=Cross\\ City KCTY FLZ034 ---
-loc7=Daytona\\ Beach KDAB FLZ041 ---
-loc8=Destin KDTS ------ ---
-loc9=Eglin KEGI FLZ006 ---
-loc10=Fort\\ Lauderdale\\ (International) KFLL FLZ072 ---
-loc11=Fort\\ Lauderdale KFXE FLZ072 ---
-loc12=Fort\\ Myers\\ (Page\\ Field) KFMY FLZ065 ---
-loc13=Fort\\ Myers\\ (Southwest\\ Florida\\ International) KRSW FLZ065 ---
-loc14=Gainesville KGNV FLZ036 ---
-loc15=Homestead\\ AFB KHST FLZ074 ---
-loc16=Hurlburt KHRT ------ ---
-loc17=Jacksonville KJAX FLZ025 ---
-loc18=Jacksonville\\ NAS KNIP FLZ025 ---
-loc19=Jacksonville-Craig\\ Airport KCRG FLZ025 ---
-loc20=Key\\ West KEYW FLZ075 ---
-loc21=Key\\ West\\ NAS KNQX FLZ075 ---
-loc22=Lakeland KLAL FLZ052 ---
-loc23=Leesburg KLEE ------ ---
-loc24=Marathon KMTH FLZ075 ---
-loc25=Marianna KMAI FLZ011 ---
-loc26=Mayport KNRB FLZ025 ---
-loc27=Melbourne KMLB FLZ047 ---
-loc28=Miami KMIA FLZ074 mia
-loc29=Miami-Kendall KTMB FLZ074 mia
-loc30=Miami-Opa\\ Locka KOPF FLZ074 mia
-loc31=Milton KNSE FLZ004 ---
-loc32=Nasa\\ Shuttle KTTS ------ ---
-loc33=Naples KAPF FLZ069 ---
-loc34=New\\ Port\\ Richey KRRF FLZ051 ---
-loc35=Ocala KOCF FLZ040 ---
-loc36=Orlando KORL FLZ045 ---
-loc37=Orlando\\ (Orlando\\ International) KMCO FLZ045 ---
-loc38=Panama\\ City KPFN FLZ012 ---
-loc39=Pensacola KPNS FLZ002 ---
-loc40=Pensacola\\ NAS KNPA FLZ002 ---
-loc41=Perry-Foley K40J ------ ---
-loc42=Pompano\\ Beach KPMP ------ ---
-loc43=Punta\\ Gorda KPGD ------ ---
-loc44=Sanford KSFB FLZ046 ---
-loc45=Sarasota KSRQ FLZ060 ---
-loc46=St\\ Petersburg KSPG FLZ050 ---
-loc47=St\\ Petersburg\\ /\\ Clearwater KPIE FLZ050 ---
-loc48=Tallahassee KTLH FLZ017 ---
-loc49=Tampa KTPA FLZ051 ---
-loc50=Tampa-Macdill\\ AFB KMCF FLZ051 ---
-loc51=Titusville KTIX FLZ047 ---
-loc52=Tyndall\\ AFB KPAM ------ ---
-loc53=Valparaiso KVPS FLZ006 ---
-loc54=Valparaiso-Eglin\\ AFB KEGI FLZ006 ---
-loc55=Vero\\ Beach KVRB FLZ054 ---
-loc56=West\\ Palm\\ Beach KPBI FLZ068 ---
-loc57=Winter\\ Haven KGIF ------ ---
-
-[US_GA]
-name=Georgia
-loc0=Albany KABY GAZ125 ---
-loc1=Alma KAMG GAZ134 ---
-loc2=Athens KAHN GAZ036 atl
-loc3=Atlanta KATL GAZ033 atl
-loc4=Augusta KAGS GAZ065 ---
-loc5=Brunswick KSSI GAZ154 ---
-loc6=Columbus KCSG GAZ089 ---
-loc7=Columbus-Fort\\ Benning KLSF GAZ089 ---
-loc8=Dekalb/Peachtree KPDK ------ ---
-loc9=Hinesville KLHW ------ ---
-loc10=Fort\\ Benning KLSF GAZ090 ---
-loc11=Fort\\ Stewart KLHW GAZ138 ---
-loc12=Macon KMCN GAZ082 ---
-loc13=Marietta KMGE GAZ032 ---
-loc14=Moultrie KMGR ------ ---
-loc15=Rome-Russell KRMG GAZ019 atl
-loc16=Savannah KSAV GAZ119 ---
-loc17=Savannah-Hunter\\ AAF KSVN GAZ119 ---
-loc18=St\\ Simon's\\ Island KSSI GAZ154 ---
-loc19=Valdosta KVLD GAZ160 ---
-loc20=Valdosta-Moody\\ AFB KVAD GAZ160 ---
-loc21=Warner\\ Robins KWRB GAZ095 ---
-loc22=West\\ Atlanta KFTY GAZ033 ---
-loc23=Waycross KAYS GAZ151 ---
-
-[US_HI]
-name=Hawaii
-loc0=Barbers\\ Point PHNA HIZ002 ---
-loc1=Barking\\ Sand PHBK ------ ---
-loc2=Bradshaw\\ Field PHSF ------ ---
-loc3=Hilo PHTO HIZ004 ---
-loc4=Honolulu PHNL HIZ002 ---
-loc5=Kahului PHOG HIZ003 ---
-loc6=Kailua-Kona PHKO HIZ002 ---
-loc7=Kaneohe PHNG HIZ002 ---
-loc8=Lahaina PHJH HIZ003 ---
-loc9=Lanai PHNY HIZ003 ---
-loc10=Lihue PHLI HIZ001 ---
-loc11=Molokai PHMK HIZ005 ---
-loc12=Oahu PHHI HIZ002 ---
-
-[US_IL]
-name=Illinois
-loc0=Alton KALN ILZ100 ---
-loc1=Aurora KARR ILZ013 ---
-loc2=Belleville KBLV ILZ101 ---
-loc3=Bloomington KBMI ILZ038 ---
-loc4=Cairo KCIR ILZ092 ---
-loc5=Carbondale KMDH ILZ084 ---
-loc6=Champaign KCMI ILZ045 059
-loc7=Chicago-DuPage KDPA ILZ014 ord
-loc8=Chicago-O'Hare KORD ILZ013 ord
-loc9=Chicago-Lakefront KCGX ILZ014 ord
-loc10=Chicago-Midway KMDW ILZ014 ord
-loc11=Danville KDNV ILZ046 ---
-loc12=Decatur KDEC ILZ053 ---
-loc13=East\\ St\\ Louis KCPS ILZ101 ---
-loc14=Galesburg KGBG ILZ027 ---
-loc15=Marion KMWA ILZ085 ---
-loc16=Marseilles KMMO ILZ019 ---
-loc17=Mattoon KMTO ILZ056 ---
-loc18=Moline-Quad\\ Cities KMLI ILZ015 ---
-loc19=Mount\\ Vernon KMVN ILZ075 ---
-loc20=Peoria KPIA ILZ029 ---
-loc21=Quincy KUIN ILZ095 ---
-loc22=Rockford KRFD ILZ003 ---
-loc23=Salem KSLO ILZ070 ---
-loc24=Springfield KSPI ILZ051 ---
-
-[US_IN]
-name=Indiana
-loc0=Bloomington KBMG INZ062 ---
-loc1=Elkhart KEKM INZ005 ---
-loc2=Evansville KEVV INZ086 ---
-loc3=Fort\\ Wayne KFWA INZ018 ---
-loc4=Gary KGYY INZ001 ---
-loc5=Indianapolis KIND INZ047 ---
-loc6=Lafayette KLAF INZ029 ---
-loc7=Marion KMZZ ------ ---
-loc8=Muncie KMIE INZ041 ---
-loc9=Peru KGUS INZ023 ---
-loc10=South\\ Bend KSBN INZ004 ---
-loc11=Terre\\ Haute KHUF INZ051 ---
-
-[US_MD]
-name=Maryland
-loc0=Aberdeen KAPG ------ ---
-loc1=Andrews\\ AFB KADW MDZ013 ---
-loc2=Baltimore KMTN MDZ011 dca
-loc3=Baltimore-Glen\\ Burnie KBWI MDZ014 dca
-loc4=Cumberland KCBE ------ ---
-loc5=Fort\\ Meade KFME MDZ014 ---
-loc6=Hagerstown KHGR MDZ003 ---
-loc7=Oakland K2G4 ------ 075
-loc8=Patuxent\\ River KNHK MDZ014 ---
-loc9=Salisbury KSBY MDZ022 ---
-
-[US_MI]
-name=Michigan
-loc0=Ann\\ Arbor KARB MIZ075 dtw
-loc1=Alpena KAPN MIZ024 ---
-loc2=Battle\\ Creek KBTL MIZ073 ---
-loc3=Benton\\ Harbor KBEH ------ ---
-loc4=Chippewa\\ County KCIU MIZ008 ---
-loc5=Copper\\ Harbor KP59 MIZ003 ---
-loc6=Detroit KDET MIZ076 dtw
-loc7=Detroit-Taylor KDTW MIZ076 dtw
-loc8=Detroit/Ypsilanti KYIP MIZ075 dtw
-loc9=Escanaba KESC MIZ013 ---
-loc10=Flint KFNT MIZ061 dtw
-loc11=Grand\\ Rapids KGRR MIZ057 ---
-loc12=Hancock KCMX MIZ003 ---
-loc13=Harbor\\ Beach KP58 MIZ049 ---
-loc14=Houghton\\ Lake KHTL MIZ034 ---
-loc15=Iron\\ Mountain KIMT MIZ011 ---
-loc16=Ironwood KIWD MIZ009 ---
-loc17=Jackson KJXN MIZ074 dtw
-loc18=Kalamazoo KAZO MIZ072 045
-loc19=Lansing KLAN MIZ066 ---
-loc20=Manistee KMBL MIZ031 ---
-loc21=Marquette KMQT MIZ005 ---
-loc22=Menominee KMNM MIZ012 ---
-loc23=Mount\\ Clemens KMTC MIZ070 ---
-loc24=Muskegon KMKG MIZ050 ---
-loc25=Oscoda KOSC MIZ036 ---
-loc26=Pellston KPLN MIZ016 ---
-loc27=Pontiac KPTK MIZ069 ---
-loc28=Saginaw KMBS MIZ053 ---
-loc29=Sault\\ Ste\\ Marie KSSM MIZ008 ---
-loc30=Sawyer\\ AFB KSAW MIZ077 ---
-loc31=Seul\\ Choix\\ Pt KP75 ------ ---
-loc32=Traverse\\ City KTVC MIZ020 ---
-loc33=Ypsilanti KYIP MIZ075 dtw
-
-[US_MN]
-name=Minnesota
-loc0=Alexandria KAXN MNZ041 ---
-loc1=Bemidji KBJI MNZ009 ---
-loc2=Brainerd KBRD MNZ034 ---
-loc3=Detroit\\ Lakes KDTL MNZ027 ---
-loc4=Duluth KDLH MNZ019 ---
-loc5=Ely KELO MNZ019 ---
-loc6=Fairmont KFRM MNZ091 ---
-loc7=Fergus\\ Falls KFFM MNZ031 ---
-loc8=Grand\\ Marais KP61 MNZ021 ---
-loc9=Grand\\ Rapids KGPZ MNZ026 ---
-loc10=Hibbing KHIB MNZ019 ---
-loc11=International\\ Falls KINL MNZ010 ---
-loc12=Litchfield KY69 MNZ058 ---
-loc13=Mankato KMKT MNZ083 ---
-loc14=Marshall KMML MNZ072 ---
-loc15=Minneapolis KMSP MNZ060 msp
-loc16=Minneapolis\\ [2] KFCM MNZ060 msp
-loc17=Minneapolis\\ [3] KMIC MNZ060 msp
-loc18=Pequot\\ Lakes KP39 MNZ034 ---
-loc19=Redwood\\ Falls KRWF MNZ073 ---
-loc20=Rochester KRST MNZ087 030
-loc21=St\\ Cloud KSTC MNZ051 ---
-loc22=St\\ Paul KSTP MNZ062 ---
-loc23=Thief\\ River\\ Falls KTVF MNZ013 ---
-loc24=Warroad KD45 MNZ005 ---
-loc25=Worthington KOTG MNZ089 ---
-
-[US_NV]
-name=Nevada
-loc0=Austin KU31 NVZ012 ---
-loc1=Battle\\ Mountain KBAM NVZ012 ---
-loc2=Caliente KP38 NVZ015 ---
-loc3=Desert\\ Rock KDRA ------ ---
-loc4=Elko KEKO NVZ008 ---
-loc5=Ely KELY NVZ011 ---
-loc6=Eureka KP68 NVZ012 ---
-loc7=Fallon KNFL NVZ004 ---
-loc8=Hawthorne KHTH NVZ001 ---
-loc9=Indian\\ Springs KL63 NVZ017 ---
-loc10=Las\\ Vegas KLAS NVZ020 079
-loc11=N\\ Las\\ Vegas KLSV NVZ020 079
-loc12=Lovelock KLOL NVZ004 ---
-loc13=Owyhee KOWY NVZ007 ---
-loc14=Reno KRNO NVZ003 065
-loc15=Tonopah KTPH NVZ014 ---
-loc16=Winnemucca KWMC NVZ006 ---
-
-[US_NJ]
-name=New Jersey
-loc0=Atlantic\\ City KACY NJZ022 ---
-loc1=Belmar-Farmingdale KBLM NJZ013 ---
-loc2=Caldwell KCDW NJZ005 ---
-loc3=Lakehurst KNEL ------ ---
-loc4=Millville KMIV NJZ021 ---
-loc5=Morristown KMMU NJZ008 ---
-loc6=Mount\\ Holly KVAY ------ ---
-loc7=Newark KEWR NJZ005 ---
-loc8=Teterboro KTEB NJZ003 ---
-loc9=Trenton KTTN NJZ015 ---
-loc10=Wildwood KWWD NJZ024 ---
-loc11=Wrightstown\\ /\\ Mcguire\\ AFB KWRI NJZ019 ---
-
-[US_NC]
-name=North Carolina
-loc0=Asheville KAVL NCZ053 ---
-loc1=Cape\\ Hatteras KHAT NCZ047 ---
-loc2=Charlotte KCLT NCZ071 100
-loc3=Cherry\\ Point KNKT ------ ---
-loc4=Elizabeth\\ City KECG NCZ016 ---
-loc5=Fayetteville KFAY NCZ088 100
-loc6=Fort\\ Bragg KFBG NCZ088 ---
-loc7=Goldsboro KGSB NCZ078 ---
-loc8=Greensboro KGSO NCZ022 rdu
-loc9=Hickory KHKY NCZ056 ---
-loc10=Hoffman KHFF ------ ---
-loc11=Hot\\ Springs KHSS NCZ048 ---
-loc12=Jacksonville KOAJ NCZ098 ---
-loc13=Kinston KISO NCZ091 ---
-loc14=New\\ Bern KEWN NCZ093 ---
-loc15=New\\ River KNCA NCZ098 ---
-loc16=Pope\\ AFB KPOB NCZ088 ---
-loc17=Raleigh-Durham KRDU NCZ041 rdu
-loc18=Rocky\\ Mount KRWI NCZ028 rdu
-loc19=Stumpy\\ Point K2DP ------ ---
-loc20=Wilmington KILM NCZ101 ---
-loc21=Winston-Salem KINT NCZ021 ---
-
-[US_OH]
-name=Ohio
-loc0=Akron KCAK OHZ021 ---
-loc1=Cincinnati KLUK OHZ077 074
-loc2=Cleveland KCLE OHZ011 cle
-loc3=Cleveland-Lakefront KBKL OHZ011 cle
-loc4=Cleveland/Cuyahoga KCGF OHZ011 cle
-loc5=Columbus-Gahanna KCMH OHZ055 ---
-loc6=Columbus-OSU KOSU OHZ055 ---
-loc7=Dayton KDAY OHZ061 074
-loc8=Dayton-Fairborn KFFO OHZ061 ---
-loc9=Dayton-South\\ Airport KMGY OHZ061 ---
-loc10=Findlay KFDY OHZ017 ---
-loc11=Hamilton KHAO OHZ070 ---
-loc12=Lancaster KLHQ OHZ067 ---
-loc13=Mansfield KMFD OHZ029 ---
-loc14=Rickenbacker KLCK OHZ070 ---
-loc15=Toledo KTOL OHZ003 ---
-loc16=Willoughby KLNN OHZ012 ---
-loc17=Wilmington KILN OHZ072 ---
-loc18=Wooster KBJJ OHZ031 ---
-loc19=Youngstown KYNG OHZ033 ---
-loc20=Zanesville KZZV OHZ057 ---
-
-[US_OR]
-name=Oregon
-loc0=Astoria KAST ORZ001 ---
-loc1=Aurora K3S2 ORZ005 ---
-loc2=Baker\\ City KBKE ORZ020 ---
-loc3=Brookings K4BK ORZ003 ---
-loc4=Burns KBNO ORZ022 ---
-loc5=Cascade KCZK ORZ015 ---
-loc6=Eugene KEUG ORZ006 ---
-loc7=Hillsboro KHIO ORZ004 ---
-loc8=Klamath\\ Falls KLMT ORZ012 ---
-loc9=Lakeview K4LW ORZ015 ---
-loc10=Meacham KMEH ORZ017 ---
-loc11=Medford KMFR ORZ008 ---
-loc12=Newport KONP ORZ002 ---
-loc13=North\\ Bend KOTH ORZ003 ---
-loc14=Ontario KONO ORZ021 ---
-loc15=Pendleton KPDT ORZ017 ---
-loc16=Portland KPDX ORZ004 ---
-loc17=Redmond KRDM ORZ014 ---
-loc18=Roseburg KRBG ORZ007 ---
-loc19=Salem KSLE ORZ005 ---
-loc20=Sexton\\ Summit KSXT ORZ008 ---
-loc21=The\\ Dalles KDLS ORZ010 ---
-loc22=Troutdale KTTD ORZ004 ---
-
-[US_RI]
-name=Rhode Island
-loc0=Block\\ Island KBID RIZ006 ---
-loc1=North\\ Kingstown KOQU RIZ006 ---
-loc2=Providence KPVD RIZ002 bos
-
-[US_SC]
-name=South Carolina
-loc0=Anderson KAND SCZ010 099
-loc1=Beaufort KNBC SCZ048 ---
-loc2=Charleston KCHS SCZ050 ---
-loc3=Columbia KCAE SCZ028 100
-loc4=Columbia-McEntire KMMT SCZ028 100
-loc5=Florence KFLO SCZ032 ---
-loc6=Greenville KGMU SCZ006 099
-loc7=Greenville-Spartanburg KGSP SCZ007 099
-loc8=Myrtle\\ Beach KMYR SCZ034 ---
-loc9=N\\ Myrtle\\ Beach KCRE SCZ034 ---
-loc10=Sumter KSSC SCZ031 ---
-loc11=Sumter\\ (2) K2PJ SCZ031 ---
-
-[US_TN]
-name=Tennessee
-loc0=Bristol KTRI TNZ017 ---
-loc1=Chattanooga KCHA TNZ099 ---
-loc2=Crossville KCSV TNZ066 ---
-loc3=Dyersburg KDYR TNZ019 ---
-loc4=Jackson KMKL TNZ052 ---
-loc5=Knoxville KTYS TNZ069 087
-loc6=Knoxville-Downtown KDKX TNZ069 087
-loc7=Memphis KMEM TNZ088 097
-loc8=Memphis-NAS KNQA TNZ088 097
-loc9=Nashville KBNA TNZ027 ---
-loc10=Smyrna KMQY TNZ062 ---
-
-[US_TX]
-name=Texas
-loc0=Abilene KABI TXZ127 ---
-loc1=Alice KALI TXZ241 ---
-loc2=Amarillo KAMA TXZ017 ---
-loc3=Angleton KLBX ------ ---
-loc4=Arlington KF54 TXZ119 ---
-loc5=Austin KAUS TXZ192 113
-loc6=Beaumont-Port\\ Arthur KBPT TXZ215 ---
-loc7=Bergstrom\\ AFB KBSM TXZ192 ---
-loc8=Borger KBGD TXZ008 ---
-loc9=Brownsville KBRO TXZ255 ---
-loc10=Burnet KBMQ ------ ---
-loc11=Childress KCDS TXZ026 ---
-loc12=College\\ Station KCLL TXZ196 ---
-loc13=Conroe KCXO ------ ---
-loc14=Corpus\\ Christi KCRP TXZ243 ---
-loc15=Corpus\\ Christi\\ NAS KNGP TXZ243 ---
-loc16=Corsicana KCRS TXZ146 ---
-loc17=Cotulla KCOT TXZ229 119
-loc18=Dalhart KDHT TXZ001 ---
-loc19=Dallas-Addison KADS TXZ119 ---
-loc20=Dallas-Fort\\ Worth KDFW TXZ119 ---
-loc21=Dallas-Love\\ Field KDAL TXZ119 ---
-loc22=Dallas-Redbird KRBD TXZ119 ---
-loc23=Del\\ Rio KDRT TXZ183 ---
-loc24=Denton KDTO ------ ---
-loc25=El\\ Paso KELP TXZ055 ---
-loc26=Fort\\ Stockton KFST TXZ075 ---
-loc27=Fort\\ Worth-Meacham KFTW TXZ118 ---
-loc28=Fort\\ Worth\\ NAS KNFW TXZ118 ---
-loc29=Fort\\ Worth-Alliance KAFW TXZ118 ---
-loc30=Galveston KGLS TXZ238 ---
-loc31=Georgetown KGTU TXZ173 ---
-loc32=Greenville KGVT ------ ---
-loc33=Guadalupe\\ Pass KGDP TXZ234 ---
-loc34=Harlingen KHRL TXZ255 ---
-loc35=Hondo KHDO TXZ204 ---
-loc36=Houston-Bush KIAH TXZ213 hou
-loc37=Houston-Hooks KDWH TXZ213 hou
-loc38=Houston-Ellington\\ Field KEFD TXZ213 hou
-loc39=Houston-Clover KT02 TXZ213 hou
-loc40=Houston-Hobby KHOU TXZ213 hou
-loc41=Huntsville KUTS ------ ---
-loc42=Junction KJCT TXZ169 ---
-loc43=Killeen KILE TXZ158 113
-loc44=Killeen-Ft\\ Hood KHLR TXZ158 113
-loc45=Killeen-Gray\\ AAF KGRK TXZ158 113
-loc46=Kingsville KNQI TXZ242 ---
-loc47=Laredo KLRD TXZ239 ---
-loc48=Laughlin KDLF ------ ---
-loc49=Longview KGGG TXZ138 ---
-loc50=Lubbock KLBB TXZ035 ---
-loc51=Lufkin KLFK TXZ165 ---
-loc52=Mc\\ Gregor KPWG ------ ---
-loc53=McAllen KMFE TXZ253 ---
-loc54=Midland KMAF TXZ062 ---
-loc55=Mineral\\ Wells KMWL TXZ117 ---
-loc56=Nacogdoches KOCH TXZ152 ---
-loc57=New\\ Braunfels K3R5 TXZ207 ---
-loc58=Palacios KPSX TXZ236 ---
-loc59=Paris KPRX TXZ095 ---
-loc60=Randolph\\ AFB KRND ------ ---
-loc61=Rockport KRKP TXZ245 ---
-loc62=Sabine\\ Pass KRPE ------ ---
-loc63=San\\ Angelo KSJT TXZ072 ---
-loc64=San\\ Antonio KSAT TXZ205 119
-loc65=San\\ Antonio-Kelly\\ AFB KSKF TXZ205 119
-loc66=San\\ Antonio-Stinson KSSF TXZ205 119
-loc67=Sanderson KP07 TXZ082 ---
-loc68=Sherman-Denison KF39 TXZ093 ---
-loc69=Temple KTPL TXZ158 ---
-loc70=Terrell KTRL ------ ---
-loc71=Tyler KTYR TXZ136 ---
-loc72=Victoria KVCT TXZ234 ---
-loc73=Waco KACT TXZ159 ---
-loc74=Wichita\\ Falls KSPS TXZ086 ---
-loc75=Wink KINK TXZ060 ---
-
-[US_VA]
-name=Virginia
-loc0=Abingdon KVJI VAZ008 ---
-loc1=Ashland KOFP VAZ063 ---
-loc2=Charlottesville KCHO VAZ037 ---
-loc3=Danville KDAN VAZ044 ---
-loc4=Dublin KPSK VAZ013 ---
-loc5=Farmville KFVX VAZ061 ---
-loc6=Fort\\ Belvoir KDAA VAZ053 ---
-loc7=Fort\\ Eustis KFAF ------ ---
-loc8=Franklin KFKN VAZ092 ---
-loc9=Galax-Hillsville KHLX VAZ016 ---
-loc10=Hampton KLFI VAZ094 ---
-loc11=Hot\\ Springs KHSP VAZ020 ---
-loc12=Langley\\ AFB KLFI VAZ094 ---
-loc13=Leesburg KJYO VAZ042 ---
-loc14=Lynchburg KLYH VAZ045 ---
-loc15=Manassas KHEF VAZ052 ---
-loc16=Marion-Wytheville KMKJ VAZ009 ---
-loc17=Martinsville KMTV VAZ043 ---
-loc18=Melfa KMFV VAZ099 ---
-loc19=Newport\\ News KPHF VAZ093 ---
-loc20=Norfolk KORF VAZ093 089
-loc21=Norfolk\\ NAS KNGU VAZ093 089
-loc22=Petersburg KPTB VAZ081 ---
-loc23=Quantico KNYG VAZ052 ---
-loc24=Richmond KRIC VAZ071 089
-loc25=Roanoke KROA VAZ022 ---
-loc26=Shannon KEZF ------ ---
-loc27=Staunton KSHD VAZ025 ---
-loc28=Virginia\\ Beach KNTU VAZ098 ---
-loc29=Virginia\\ Tech\\ Airport KBCB VAZ014 ---
-loc30=Wakefield KAKQ VAZ088 ---
-loc31=Wallops\\ Island KWAL ------ ---
-loc32=Waynesboro KSHD VAZ025 ---
-loc33=Winchester KOKV VAZ028 ---
-loc34=Wise KLNP VAZ002 ---
-
-[US_WV]
-name=West Virginia
-loc0=Beckley KBKW WVZ035 ---
-loc1=Bluefield KBLF WVZ042 ---
-loc2=Charleston KCRW WVZ015 074
-loc3=Clarksburg KCKB WVZ031 ---
-loc4=Elkins KEKN WVZ047 ---
-loc5=Huntington KHTS WVZ006 ---
-loc6=Lewisburg KLWB WVZ045 ---
-loc7=Martinsburg KMRB WVZ052 ---
-loc8=Morgantown KMGW WVZ022 075
-loc9=Parkersburg KPKB WVZ009 ---
-loc10=Wheeling KHLG WVZ004 ---
-loc11=White\\ Sulphur KSSU WVZ045 ---
-
-[US_WI]
-name=Wisconsin
-loc0=Antigo KAIG WIZ019 ---
-loc1=Appleton KATW WIZ038 ---
-loc2=Eau\\ Claire KEAU WIZ028 ---
-loc3=Fond\\ Du\\ Lac KFLD WIZ051 ---
-loc4=Green\\ Bay KGRB WIZ039 ---
-loc5=Hayward KHYR WIZ008 ---
-loc6=Janesville KJVL WIZ069 ---
-loc7=Kenosha KENW WIZ072 ---
-loc8=La\\ Crosse KLSE WIZ041 ---
-loc9=Lone\\ Rock KLNR WIZ055 ---
-loc10=Madison KMSN WIZ063 045
-loc11=Manitowoc KMTW WIZ050 ---
-loc12=Marshfield KMFI WIZ035 ---
-loc13=Milwaukee KMKE WIZ066 045
-loc14=Milwaukee-Timmerman KMWC WIZ066 045
-loc15=Minocqua KARV WIZ010 ---
-loc16=Mosinee KCWA WIZ030 ---
-loc17=Oshkosh KOSH WIZ048 ---
-loc18=Phillips KPBH WIZ009 ---
-loc19=Rhinelander KRHI WIZ010 ---
-loc20=Sheboygan KSBM WIZ052 045
-loc21=Sturgeon\\ Bay KSUE WIZ022 ---
-loc22=Superior KSUW WIZ001 ---
-loc23=Volk\\ Field KVOK ------ ---
-loc24=Waukesha KUES WIZ065 ---
-loc25=Wausau KAUW WIZ030 ---
-loc26=Wisconsin\\ Rapids KISW WIZ035 ---
-
-
-[US_MA]
-name=Massachusetts
-loc0=Ashburnam K9B4 ------ ---
-loc1=Ashfield K2B5 ------ ---
-loc2=Bedford KBED MAZ005 ---
-loc3=Beverly KBVY MAZ007 ---
-loc4=Boston KBOS MAZ015 bos
-loc5=Chatham KCQX MAZ022 bos
-loc6=Chicopee\\ Falls KCEF ------ ---
-loc7=Falmouth-Otis\\ AFB KFMH MAZ022 ---
-loc8=Fitchburg KFIT ------ ---
-loc9=Hyannis KHYA MAZ022 ---
-loc10=Lawrence KLWM MAZ007 ---
-loc11=Marthas\\ Vineyard KMVY MAZ023 ---
-loc12=Nantucket KACK MAZ024 ---
-loc13=New\\ Bedford KEWB MAZ017 ---
-loc14=North\\ Adams K2B6 MAZ001 ---
-loc15=Norwood KOWD MAZ013 ---
-loc16=Orange KORE ------ ---
-loc17=Plymouth KPYM MAZ018 ---
-loc18=Provincetown KPVC ------ ---
-loc19=Taunton K9B0 ------ ---
-loc20=Westfield KBAF MAZ011 ---
-loc21=Worcester KORH MAZ012 bos
-
-[US_NY]
-name=New York
-loc0=Albany KALB NYZ052 048
-loc1=Binghamton KBGM NYZ056 ---
-loc2=Buffalo KBUF NYZ010 047
-loc3=Elmira KELM NYZ024 ---
-loc4=Farmingdale KFRG NYZ077 ---
-loc5=Fort\\ Drum KGTB NYZ007 ---
-loc6=Glens\\ Falls KGFL NYZ042 ---
-loc7=Griffiss\\ AFB KRME ------ ---
-loc8=Islip KISP NYZ080 ---
-loc9=Ithaca KITH NYZ025 048
-loc10=Jamestown KJHW NYZ019 047
-loc11=Massena KMSS NYZ026 ---
-loc12=Montgomery KMGJ NYZ067 ---
-loc13=Monticello KMSV NYZ062 ---
-loc14=New\\ York-JFK\\ Arpt KJFK NYZ076 lga
-loc15=New\\ York-La\\ Guardia KLGA NYZ076 lga
-loc16=Newburgh KSWF NYZ067 ---
-loc17=Niagara\\ Falls KIAG NYZ001 047
-loc18=Ogdensburg KOGS NYZ026 ---
-loc19=Penn\\ Yan KPEO ------ ---
-loc20=Plattsburg KPBG NYZ031 ---
-loc21=Poughkeepsie KPOU NYZ065 ---
-loc22=Rochester KROC NYZ003 047
-loc23=Saranac\\ Lake KSLK NYZ027 ---
-loc24=Schenectady KSCH NYZ049 ---
-loc25=Syracuse KSYR NYZ018 048
-loc26=Utica KUCA NYZ037 ---
-loc27=Watertown KART NYZ007 ---
-loc28=Westhampton KFOK NYZ080 ---
-loc29=White\\ Plains KHPN NYZ070 ---
-
-[US_WA]
-name=Washington
-loc0=Bellingham KBLI WAZ002 ---
-loc1=Bremerton KPWT WAZ010 ---
-loc2=Burlington K75S WAZ005 ---
-loc3=Colville K63S WAZ035 ---
-loc4=Ephrata KEPH WAZ033 ---
-loc5=Everett KPAE WAZ006 sea
-loc6=Fairchild KSKA ------ ---
-loc7=Fort\\ Lewis KGRF WAZ008 ---
-loc8=Friday\\ Harbor KFHR WAZ001 ---
-loc9=Hoquiam KHQM WAZ016 ---
-loc10=Moses\\ Lake KMWH WAZ033 ---
-loc11=Oak\\ Harbor K76S WAZ009 ---
-loc12=Olympia KOLM WAZ008 sea
-loc13=Omak K4OM WAZ038 ---
-loc14=Pasco KPSC WAZ028 ---
-loc15=Port\\ Angeles KCLM WAZ013 ---
-loc16=Pullman KPUW WAZ032 ---
-loc17=Quillayute KUIL ------ ---
-loc18=Renton KRNT WAZ007 ---
-loc19=Seattle KSEA WAZ007 sea
-loc20=Seattle-Boeing KBFI WAZ007 sea
-loc21=Shelton KSHN WAZ010 ---
-loc22=Spokane KGEG WAZ034 002
-loc23=Spokane-Parkwater KSFF WAZ034 002
-loc24=Stampede\\ Pass KSMP ------ ---
-loc25=Tacoma KTIW WAZ007 sea
-loc26=Tacoma-Lakewood KTCM WAZ007 sea
-loc27=Toledo KTDO WAZ020 ---
-loc28=Walla\\ Walla KALW WAZ029 ---
-loc29=Wenatchee KEAT WAZ038 ---
-loc30=Whidbey\\ Island KNUW WAZ009 ---
-loc31=Yakima KYKM WAZ025 ---
-
-[CA]
-name=Canada
-states=AB BC MB NB NF NS NT ON QC SK YK
-
-[CA_AB]
-name=Alberta
-loc0=Calgary CYYC ------ ---
-loc1=Edmonton CYEG ------ ---
-loc2=Edmonton/Villeneuve CZVL ------ ---
-
-[CA_BC]
-name=British Columbia
-loc0=Abbotsford CYXX ------ ---
-loc1=Comox CYQQ ------ ---
-loc2=Port\\ Hardy CYZT ------ ---
-loc3=Smithers CYYD ------ ---
-loc4=Vancouver CYVR ------ ---
-loc5=Victoria CYYJ ------ ---
-
-[CA_MB]
-name=Manitoba
-loc0=Churchill CYYQ ------ ---
-loc1=Winnipeg CYWG ------ ---
-
-[CA_NB]
-name=New Brunswick
-loc0=Chatham CYCH ------ ---
-loc1=Fredericton CYFC ------ ---
-loc2=Moncton CYQM ------ ---
-
-[CA_NF]
-name=Newfoundland
-loc0=Churchill\\ Falls KZUM ------ ---
-loc1=Gander CYQX ------ ---
-loc2=Goose\\ Bay CYYR ------ ---
-loc3=Saint\\ Anthony CYAY ------ ---
-loc4=St.\\ John's CYYT ------ ---
-loc5=Stephenville CYJT ------ ---
-
-[CA_NS]
-name=Nova Scotia
-loc0=Greenwood CYZX ------ ---
-loc1=Halifax CYHZ ------ ---
-loc2=Shearwater CYAW ------ ---
-loc3=Sydney CYQY ------ ---
-
-[CA_NT]
-name=Northwest Territories
-loc0=Iqaluit CYFB ------ ---
-loc1=Yellowknife CYZF ------ ---
-
-[CA_ON]
-name=Ontario
-loc0=Ottawa CYOW ------ ---
-loc1=Toronto CYYZ ------ 047
-loc2=Trenton CYTR ------ ---
-loc3=Windsor CYQG ------ ---
-
-[CA_QC]
-name=Quebec
-loc0=Bagotville CYBG ------ ---
-loc1=Gatineau CYND ------ ---
-loc2=La\\ Grande CYGL ------ ---
-loc3=Montreal\\ Saint-Hubert CYHU ------ ---
-loc4=Montreal\\ Mirabel CYMX ------ ---
-loc5=Montreal\\ Dorval CYUL ------ ---
-loc6=Quebec\\ City CYQB ------ ---
-loc7=Sept-Iles CYZV ------ ---
-
-[CA_SK]
-name=Saskatchewan
-loc0=Nipawin CYBU ------ ---
-loc1=Regina CYQR ------ ---
-loc2=Saskatoon CYXE ------ ---
-loc3=Swift\\ Current CYYN ------ ---
-
-[CA_YK]
-name=Yukon
-loc0=Shingle\\ Point CYUA ------ ---
-
-[MX]
-name=Mexico
-states=MX
-
-[MX_MX]
-name=Mexico
-loc0=Acapulco MMAA ------ ---
-loc1=Aeropuerto\\ del\\ Norte MMAN ------ ---
-loc2=Aguascaliantes MMAS ------ ---
-loc3=Bahias\\ de\\ Huatulco MMBT ------ ---
-loc4=Campeche MMCP ------ ---
-loc5=Cancun MMUN ------ ---
-loc6=Chetumal MMCM ------ ---
-loc7=Chihuahua MMCU ------ ---
-loc8=Ciudad\\ del\\ Carmen MMCE ------ ---
-loc9=Ciudad\\ Juarez MMCS ------ ---
-loc10=Ciudad\\ Obregon MMCN ------ ---
-loc11=Ciudad\\ Victoria MMCV ------ ---
-loc12=Colima MMIA ------ ---
-loc13=Cozumel MMCZ ------ ---
-loc14=Cuernavaca MMCB ------ ---
-loc15=Culiacan MMCL ------ ---
-loc16=Del\\ Bajio MMLO ------ ---
-loc17=Durango MMDO ------ ---
-loc18=Guadalajara MMGL ------ ---
-loc19=Guaymas MMGM ------ ---
-loc20=Hermosillo MMHO ------ ---
-loc21=Ixtapa MMZH ------ ---
-loc22=La\\ Paz MMLP ------ ---
-loc23=Los\\ Mochis MMLM ------ ---
-loc24=Manzanillo MMZO ------ ---
-loc25=Matamoros MMMA ------ ---
-loc26=Mazatlan MMMZ ------ ---
-loc27=Merida MMMD ------ ---
-loc28=Mexicali MMML ------ ---
-loc29=Mexico MMMX ------ ---
-loc30=Minatitlan MMMT ------ ---
-loc31=Monclova MMMV ------ ---
-loc32=Morelia MMMM ------ ---
-loc33=Monterrey MMMY ------ ---
-loc34=Nuevo\\ Laredo MMNL ------ ---
-loc35=Oaxaca MMOX ------ ---
-loc36=Piedras\\ Negras MMPG ------ ---
-loc37=Poza\\ Rica MMPA ------ ---
-loc38=Puebla MMPB ------ ---
-loc39=Puerto\\ Vallarta MMPR ------ ---
-loc40=Puerto\\ Escondido MMPS ------ ---
-loc41=Queretaro MMQT ------ ---
-loc42=Reynosa MMRX ------ ---
-loc43=Saltillo MMIO ------ ---
-loc44=San\\ Jose\\ del\\ Cabo MMSD ------ ---
-loc45=San\\ Luis\\ Potosi MMSP ------ ---
-loc46=Tampico MMTM ------ ---
-loc47=Tapachula MMTP ------ ---
-loc48=Tepic MMEP ------ ---
-loc49=Tijuana MMTJ ------ ---
-loc50=Toluca MMTO ------ ---
-loc51=Torreon MMTC ------ ---
-loc52=Tulancingo MMTL ------ ---
-loc53=Tuxtla\\ Gutierrez MMTG ------ ---
-loc54=Uruapan MMPN ------ ---
-loc55=Veracruz MMVR ------ ---
-loc56=Villahermosa MMVA ------ ---
-loc57=Zacatecas MMZC ------ ---
-
-[EU]
-name=Europe
-states=AB OS BE BA BG CZ HR CY DK EE FI FR MK DE GI GR HU IE IS IT LV LT LU MT MD NL NO PL PT RO RU SK SI SP SE CH TR UA UK YU
-
-[EU_AB]
-name=Albania
-loc0=Tirana LATI ------ ---
-
-[EU_OS]
-name=Austria
-loc0=Voslau LOAV ------ ---
-loc1=Hohenems LOIH ------ ---
-loc2=Graz LOWG ------ ---
-loc3=Innsbruck LOWI ------ ---
-loc4=Klagenfurt LOWK ------ ---
-loc5=Linz LOWL ------ ---
-loc6=Salzburg LOWS ------ ---
-loc7=Wien LOWW ------ ---
-loc8=Zell\\ Am\\ See LOWZ ------ ---
-
-[EU_BE]
-name=Belgium
-loc0=Antwerpen/Deurne EBAW ------ ---
-loc1=Beauvechain EBBE ------ ---
-loc2=Brasschaat EBBT ------ ---
-loc3=Brussels-National\\ Airport EBBR ------ ---
-loc4=Charleroi-Brussels\\ South EBCI ------ ---
-loc5=Chievres EBCV ------ ---
-loc6=Elsenborn EBLB ------ ---
-loc7=Florennes EBFS ------ ---
-loc8=Kleine\\ Brogel EBBL ------ ---
-loc9=Koksijde EBFN ------ ---
-loc10=Liege EBLG ------ ---
-loc11=Oostende EBOS ------ ---
-loc12=Schaffen EBDT ------ ---
-
-[EU_BA]
-name=Bosnia-Herzegovina
-loc0=Sarajevo LQSA ------ ---
-
-[EU_BG]
-name=Bulgaria
-loc0=Burgas LBBG ------ ---
-loc1=Plovdiv LBPD ------ ---
-loc2=Sofia LBSF ------ ---
-loc3=Varna LBWN ------ ---
-
-[EU_CZ]
-name=Czech Republic
-loc0=Brno LKTB ------ ---
-loc1=Ostrava LKMT ------ ---
-loc2=Praha LKPR ------ ---
-
-[EU_HR]
-name=Croatia
-loc0=Dubrovnik LDDU ------ ---
-loc1=Pula LDPL ------ ---
-loc2=Rijeka LDRI ------ ---
-loc3=Split LDSP ------ ---
-loc4=Zadar LDZD ------ ---
-loc5=Zagreb LDZA ------ ---
-
-[EU_DK]
-name=Denmark
-loc0=Aarhus EKAH ------ ---
-loc1=Billund EKBI ------ ---
-loc2=Esbjerg EKEB ------ ---
-loc3=Karup EKKA ------ ---
-loc4=Kobenhavn/Kastrup EKCH ------ ---
-loc5=Kobenhavn/Roskilde EKRK ------ ---
-loc6=Lolland\\ Falster EKMB ------ ---
-loc7=Odense EKOD ------ ---
-loc8=Bornholm EKRN ------ ---
-loc9=Sonderborg EKSB ------ ---
-loc10=Sindal EKSN ------ ---
-loc11=Vojens/Skrydstrup EKSP ------ ---
-loc12=Skive EKSV ------ ---
-loc13=Thisted EKTS ------ ---
-loc14=Vandel EKVA ------ ---
-loc15=Kolding/Vandrup EKVD ------ ---
-loc16=Vagar EKVG ------ ---
-loc17=Stauning EKVJ ------ ---
-loc18=Vaerlose EKVL ------ ---
-loc19=Alborg EKYT ------ ---
-
-[EU_EE]
-name=Estonia
-loc0=Talinn EETN ------ ---
-
-[EU_GI]
-name=Gibraltar
-loc0=Gibraltar LXGB ------ ---
-
-[EU_IS]
-name=Iceland
-loc0=Egilsstadir BIEG ------ ---
-loc1=Keflavik BIKF ------ ---
-loc2=Reykjavik BIRK ------ ---
-
-[EU_LV]
-name=Latvia
-loc0=Riga EVRA ------ ---
-
-[EU_LT]
-name=Lithuania
-loc0=Vilnius EVRA ------ ---
-
-[EU_LU]
-name=Luxembourg
-loc0=Luxembourg ELLX ------ ---
-
-[EU_MK]
-name=FYR Macedonia
-loc0=Ohrid LWOH ------ ---
-loc1=Skopje LWSK ------ ---
-
-[EU_MT]
-name=Malta
-loc0=Luqa LMML ------ ---
-
-[EU_MD]
-name=Moldova
-loc0=Kishineu LUKK ------ ---
-
-[EU_NO]
-name=Norway
-loc0=Alesund ENAL ------ ---
-loc1=Andoya ENAN ------ ---
-loc2=Alta ENAT ------ ---
-loc3=Forde/Bringeland ENBL ------ ---
-loc4=Bronnoysund ENBN ------ ---
-loc5=Bodo ENBO ------ ---
-loc6=Bergen ENBR ------ ---
-loc7=Berlevag ENBV ------ ---
-loc8=Kristiansand/Kjevik ENCN ------ ---
-loc9=Dagali ENDI ------ ---
-loc10=Bardufoss ENDU ------ ---
-loc11=Ekofisk ENEK ------ ---
-loc12=Harstad/Narvik/Evenes ENEV ------ ---
-loc13=Fagernes ENFG ------ ---
-loc14=Floro ENFL ------ ---
-loc15=Frigg ENFR ------ ---
-loc16=Gullfax\\ C ENGC ------ ---
-loc17=Oslo/Gardenmoen ENGM ------ ---
-loc18=Haugesund ENHD ------ ---
-loc19=Hammerfest ENHF ------ ---
-loc20=Honningsvag ENHV ------ ---
-loc21=Kristiansund/Kvernberget ENKB ------ ---
-loc22=Kirkenes ENKR ------ ---
-loc23=Lista ENLI ------ ---
-loc24=Leknes ENLK ------ ---
-loc25=Mehamn ENMH ------ ---
-loc26=Molde ENML ------ ---
-loc27=Mosjoen ENMS ------ ---
-loc28=Banak ENNA ------ ---
-loc29=Narvik ENNK ------ ---
-loc30=Namsos ENNM ------ ---
-loc31=Notodden ENNO ------ ---
-loc32=Oseberg\\ A ENOA ------ ---
-loc33=Orland ENOL ------ ---
-loc34=Orsta-Volda ENOV ------ ---
-loc35=Mo\\ I\\ Rana ENRA ------ ---
-loc36=Rorvik/Ryum ENRM ------ ---
-loc37=Roros ENRO ------ ---
-loc38=Rost ENRS ------ ---
-loc39=Rygge ENRY ------ ---
-loc40=Svalbard ENSB ------ ---
-loc41=Sandane ENSD ------ ---
-loc42=Sogndal ENSG ------ ---
-loc43=Svolvaer/Helle ENSH ------ ---
-loc44=Stokmarknes/Skagen ENSK ------ ---
-loc45=Skien/Geiteryggen ENSN ------ ---
-loc46=Stord/Sorstokken ENSO ------ ---
-loc47=Sorkjosen ENSR ------ ---
-loc48=Sandnessjoen/Stokka ENST ------ ---
-loc49=Tromso/Langnes ENTC ------ ---
-loc50=Torp ENTO ------ ---
-loc51=Trondheim/Vaernes ENVA ------ ---
-loc52=Vadso ENVD ------ ---
-loc53=Stavanger/Sola ENZV ------ ---
-
-[EU_PL]
-name=Poland
-loc0=Gdansk EPGD ------ ---
-loc1=Krakow EPKK ------ ---
-loc2=Katowice EPKT ------ ---
-loc3=Poznan EPPO ------ ---
-loc4=Rzeszow EPRZ ------ ---
-loc5=Szczecin EPSC ------ ---
-loc6=Warszawa EPWA ------ ---
-
-[EU_PT]
-name=Portugal
-loc0=Beja LPBJ ------ ---
-loc1=Faro LPFR ------ ---
-loc2=Funchal LPFU ------ ---
-loc3=Lajes LPLA ------ ---
-loc4=Lisboa LPPT ------ ---
-loc5=Porto LPPR ------ ---
-loc6=Porto\\ Santo LPPS ------ ---
-loc7=Santa\\ Maria LPAZ ------ ---
-
-[EU_RO]
-name=Romania
-loc0=Arad LRAR ------ ---
-loc1=Bucuresti LRBS ------ ---
-loc2=Bucuresti-Otopeni LROP ------ ---
-loc3=Iasi LRIA ------ ---
-loc4=Kogalniceanu LRCK ------ ---
-loc5=Timisoara LRTR ------ ---
-loc6=Tirgu\\ Mures LRTM ------ ---
-loc7=Tulcea LRTC ------ ---
-
-[EU_RU]
-name=Russia
-loc0=Abakan UNAA ------ ---
-loc1=Anadyr UHMA ------ ---
-loc2=Anapa URKA ------ ---
-loc3=Arkhangelsk ULAA ------ ---
-loc4=Astrakhan URWA ------ ---
-loc5=Barnaul UNBB ------ ---
-loc6=Belgorod UUOB ------ ---
-loc7=Blagoveschensk UHBB ------ ---
-loc8=Bratsk UIBB ------ ---
-loc9=Bryansk UUBP ------ ---
-loc10=Cheboksary UWKS ------ ---
-loc11=Chelyabinsk USCC ------ ---
-loc12=Chita UIAA ------ ---
-loc13=Kliningrad UMKK ------ ---
-loc14=Kazan UWKD ------ ---
-loc15=Khabarovsk UHHH ------ ---
-loc16=Kogalym USRK ------ ---
-loc17=Krasnodar URKK ------ ---
-loc18=Krasnoyarsk UNKL ------ ---
-loc19=Magadan UHMM ------ ---
-loc20=Makhachkala URML ------ ---
-loc21=Mineralnye\\ Vody URMM ------ ---
-loc22=Moscow\\ Domodedovo UUDD ------ ---
-loc23=Moscow\\ Sheremetyevo UUEE ------ ---
-loc24=Murmansk ULMM ------ ---
-loc25=Nalchik URMN ------ ---
-loc26=Nizhny\\ Novgorod UWGG ------ ---
-loc27=Novosibirsk UNNT ------ ---
-loc28=Omsk UNOO ------ ---
-loc29=Orenburg UWOO ------ ---
-loc30=Perm USPP ------ ---
-loc31=Petropavlovsk-Kamchatsky UHPP ------ ---
-loc32=Petrozavodsk ULPB ------ ---
-loc33=Pskov ULOO ------ ---
-loc34=Raduzhny USNR ------ ---
-loc35=Rostov-Na-Donu URRR ------ ---
-loc36=Samara UWWW ------ ---
-loc37=Sankt-Peterburg ULLI ------ ---
-loc38=Saratov UWSS ------ ---
-loc39=Sochi URSS ------ ---
-loc40=Stavropol URMT ------ ---
-loc41=Syktyvkar UUYY ------ ---
-loc42=Tyumen USTR ------ ---
-loc43=Ufa UWUU ------ ---
-loc44=Ulan-Ude UIUU ------ ---
-loc45=Ulyanovsk UWLW ------ ---
-loc46=Vladikavkaz URMO ------ ---
-loc47=Vladivostok UHWW ------ ---
-loc48=Volgograd URWW ------ ---
-loc49=Voronezh UUOO ------ ---
-loc50=Yakutsk UEEE ------ ---
-loc51=Yekaterinburg USSS ------ ---
-loc52=Yuzhno-Sakhalinsk UHSS ------ ---
-
-[EU_UA]
-name=Ukraine
-loc0=Dnipropetrovsk UKDD ------ ---
-loc1=Donetsk UKCC ------ ---
-loc2=Ivano-Frankivsk UKLI ------ ---
-loc3=Kharkiv UKHH ------ ---
-loc4=Kyyiv/Boryspil UKBB ------ ---
-loc5=Kyyiv/Zhulyany UKKK ------ ---
-loc6=Kryviy\\ Rig/Lozovatka UKDR ------ ---
-loc7=Lviv UKLL ------ ---
-loc8=Odesa UKOO ------ ---
-loc9=Rivne UKLR ------ ---
-loc10=Sympheropol UKFF ------ ---
-loc11=Uzhgorod UKLU ------ ---
-
-[EU_SK]
-name=Slovakia
-loc0=Bratislava LZIB ------ ---
-loc1=Poprad LZTT ------ ---
-
-[EU_SI]
-name=Slovenia
-loc0=Ljubljana LJLJ ------ ---
-loc1=Maribor LJMB ------ ---
-loc2=Portoroz LJPZ ------ ---
-
-[EU_SE]
-name=Sweden
-loc0=Goteborg\\ (Landvetter) ESGG ------ ---
-loc1=Goteborg\\ (Save) ESGP ------ ---
-loc2=Jonkoping ESGJ ------ ---
-loc3=Kiruna ESNQ ------ ---
-loc4=Malmo/Sturup ESMS ------ ---
-loc5=Norrkoping ESSP ------ ---
-loc6=Ronneby ESDF ------ ---
-loc7=Stockholm\\ (Arlanda) ESSA ------ ---
-loc8=Stockholm\\ (Bromma) ESSB ------ ---
-loc9=Sundsvall-Harnosand ESNN ------ ---
-loc10=Umea ESNU ------ ---
-loc11=Vasteras ESOW ------ ---
-loc12=Vaxjo ESMX ------ ---
-loc13=Visby ESSV ------ ---
-
-[EU_CH]
-name=Switzerland
-loc0=Bern LSZB ------ ---
-loc1=Geneve LSGG ------ ---
-loc2=Lugano LSZA ------ ---
-loc3=Zurich LSZH ------ ---
-
-[EU_TR]
-name=Turkey
-loc0=Adana LTAF ------ ---
-loc1=Adana/Incirlik LTAG ------ ---
-loc2=Afyon LTAH ------ ---
-loc3=Amasya LTAP ------ ---
-loc4=Ankara/Esenboga LTAC ------ ---
-loc5=Ankara/Etimesgut LTAD ------ ---
-loc6=Antalya LTAI ------ ---
-loc7=Balikesir LTBF ------ ---
-loc8=Balikesir/Bandirma LTBG ------ ---
-loc9=Batman LTCJ ------ ---
-loc10=Bursa LTBE ------ ---
-loc11=Diyarbakir LTCC ------ ---
-loc12=Elazig LTCA ------ ---
-loc13=Erzurum LTCE ------ ---
-loc14=Eskisehir LTBI ------ ---
-loc15=Gaziantep LTAJ ------ ---
-loc16=Istanbul LTBA ------ ---
-loc17=Izmir/Adnan\\ Menderes LTBJ ------ ---
-loc18=Izmir/Cigli LTBL ------ ---
-loc19=Izmit LTBQ ------ ---
-loc20=Kayseri LTAU ------ ---
-loc21=Konya LTAN ------ ---
-loc22=Malatya LTAT ------ ---
-loc23=Manisa LTBT ------ ---
-loc24=Mugla/Dalaman LTBS ------ ---
-loc25=Mus LTCK ------ ---
-loc26=Samsun LTAQ ------ ---
-loc27=Sanliurfa LTCH ------ ---
-loc28=Sivas LTAR ------ ---
-loc29=Sivrihisar LTAV ------ ---
-loc30=Trabzon LTCG ------ ---
-loc31=Van LTCI ------ ---
-
-[EU_CY]
-name=Cyprus
-loc0=Akrotiri LCRA ------ ---
-loc1=Ercan LCEN ------ ---
-loc2=Larnaka LCLK ------ ---
-loc3=Paphos LCPH ------ ---
-
-[EU_FI]
-name=Finland
-loc0=Helsinki EFHK ------ ---
-loc1=Tampere EFTP ------ ---
-loc2=Turku EFTU ------ ---
-
-[EU_FR]
-name=France
-loc0=Agen LFBA ------ ---
-loc1=Ajaccio/Campo\\ dell'Oro LFKJ ------ ---
-loc2=Bale-Mulhouse LFSB ------ ---
-loc3=Bastia LFKB ------ ---
-loc4=Beauvais-Tille LFOB ------ ---
-loc5=Biarritz-Bayonne LFBZ ------ ---
-loc6=Bordeaux LFBD ------ ---
-loc7=Bourges LFLD ------ ---
-loc8=Brest LFRB ------ ---
-loc9=Caen-Carpiquet LFRK ------ ---
-loc10=Calvi-Ste-Catherine LFKC ------ ---
-loc11=Cannes-Mandelieu LFMD ------ ---
-loc12=Cazaux LFBC ------ ---
-loc13=Chambery LFLB ------ ---
-loc14=Cherbourg LFRC ------ ---
-loc15=Clermont-Ferrand LFLC ------ ---
-loc16=Colmar-Meyenheim LFSC ------ ---
-loc17=Deauville-Saint-Gatien LFRG ------ ---
-loc18=Dijon LFSD ------ ---
-loc19=Dinard LFRD ------ ---
-loc20=Dole LFGJ ------ ---
-loc21=Evreux-Fauville LFOE ------ ---
-loc22=Figari LFKF ------ ---
-loc23=Grenoble-Saint-Geoirs LFLS ------ ---
-loc24=Hyeres-Le\\ Palyvestre LFTH ------ ---
-loc25=Lannion LFRO ------ ---
-loc26=Le\\ Havre-Octeville LFOH ------ ---
-loc27=Le\\ Mans LFRM ------ ---
-loc28=Le\\ Touquet LFAT ------ ---
-loc29=Lille-Lesquin LFQQ ------ ---
-loc30=Limoges LFBL ------ ---
-loc31=Lorient-Lann-Bihoue LFRH ------ ---
-loc32=Lyon-Bron LFLY ------ ---
-loc33=Lyon-Satolas LFLL ------ ---
-loc34=Luxeuil LFSX ------ ---
-loc35=Marseille-Provence LFML ------ ---
-loc36=Metz-Frescaty LFSF ------ ---
-loc37=Monpellier-Mediterrannee LFMT ------ ---
-loc38=Mont-de-Marsan LFBM ------ ---
-loc39=Nancy-Essey LFSN ------ ---
-loc40=Nancy-Ochey LFSO ------ ---
-loc41=Nantes\\ Adlantique LFRS ------ ---
-loc42=Nice-Cote\\ d'Azur LFMN ------ ---
-loc43=Nimes-Garons LFTW ------ ---
-loc44=Paris/Charles\\ De\\ Gaulle LFPG ------ ---
-loc45=Paris/Le\\ Bourget LFPB ------ ---
-loc46=Paris/Orly LFPO ------ ---
-loc47=Pau/Pyrenees LFBP ------ ---
-loc48=Perpignan-Rivesaltes LFMP ------ ---
-loc49=Poitiers LFBI ------ ---
-loc50=Quimper LFRQ ------ ---
-loc51=Reims-Champagne LFSR ------ ---
-loc52=Rennes LFRN ------ ---
-loc53=Rouen-Valle\\ de\\ Seine LFOP ------ ---
-loc54=Saint-Brieuc-Armor LFRT ------ ---
-loc55=Saint-Dizier-Robinson LFSI ------ ---
-loc56=Saint-Etienne-Boutheon LFMH ------ ---
-loc57=Saint-Nazaire-Montoir LFRZ ------ ---
-loc58=Strasbourg LFST ------ ---
-loc59=Tarbes LFBT ------ ---
-loc60=Toul-Rosieres LFSL ------ ---
-loc61=Toulouse LFBO ------ ---
-loc62=Tours-St-Symphorien LFOT ------ ---
-loc63=Toussus-Le\\ Noble LFPN ------ ---
-loc64=Troyes/Barberey LFQB ------ ---
-loc65=Vichy-Charmeil LFLV ------ ---
-loc66=Villacoublay LFPV ------ ---
-
-[EU_DE]
-name=Germany
-loc0=Augsburg EDMA ------ ---
-loc1=Bayreuth EDQD ------ ---
-loc2=Berlin-Tegel EDDT ------ ---
-loc3=Berlin-Tempelhof EDDI ------ ---
-loc4=Braunschweig EDVE ------ ---
-loc5=Bremen EDDW ------ ---
-loc6=Dortmund-Wickede EDLW ------ ---
-loc7=Dusseldorf EDDL ------ ---
-loc8=Frankfurt/Main EDDF ------ ---
-loc9=Friedrichshafen EDNY ------ ---
-loc10=Hamburg EDDH ------ ---
-loc11=Hamburg-Finkenwerder EDHI ------ ---
-loc12=Hannover EDDV ------ ---
-loc13=Hof EDQM ------ ---
-loc14=Kassel-Calden EDVK ------ ---
-loc15=Koln/Bonn EDDK ------ ---
-loc16=Lubeck-Blankensee EDHL ------ ---
-loc17=Monchengladbach EDLN ------ ---
-loc18=Munchen EDDM ------ ---
-loc19=Munster/Osnabruck EDDG ------ ---
-loc20=Nurnberg EDDN ------ ---
-loc21=Oberpfaffenhofen EDMO ------ ---
-loc22=Paderborn-Haxterberg EDLP ------ ---
-loc23=Saarbrucken EDDR ------ ---
-loc24=Stuttgart EDDS ------ ---
-loc25=Westerland EDXW ------ ---
-loc26=Dresden-Klotzsche EDDC ------ ---
-loc27=Leipzig-Schkeuditz EDDP ------ ---
-
-[EU_GR]
-name=Greece
-loc0=Andravida LGAD ------ ---
-loc1=Alexandroupolis LGAL ------ ---
-loc2=Araxos LGRX ------ ---
-loc3=Athinai LGAT ------ ---
-loc4=Chania LGSA ------ ---
-loc5=Elefsis LGEL ------ ---
-loc6=Iraklion LGIR ------ ---
-loc7=Kalamata LGKL ------ ---
-loc8=Kavala LGKV ------ ---
-loc9=Kefallinia LGKF ------ ---
-loc10=Kerkira LGKR ------ ---
-loc11=Kos LGKO ------ ---
-loc12=Kozani LGKZ ------ ---
-loc13=Limnos LGLM ------ ---
-loc14=Mitilini LGMT ------ ---
-loc15=Mykonos LGMK ------ ---
-loc16=Preveza LGPZ ------ ---
-loc17=Rodos LGRP ------ ---
-loc18=Samos LGSM ------ ---
-loc19=Santorini LGSR ------ ---
-loc20=Skiathos LGSK ------ ---
-loc21=Thessaloniki LGTS ------ ---
-loc22=Zakinthos LGZA ------ ---
-
-[EU_HU]
-name=Hungary
-loc0=Budapest LHBP ------ ---
-loc1=Papa LHPA ------ ---
-loc2=Szombathely LHSY ------ ---
-
-[EU_IE]
-name=Ireland
-loc0=Connaught EIKN ------ ---
-loc1=Cork EICK ------ ---
-loc2=Dublin EIDW ------ ---
-loc3=Shannon EINN ------ ---
-
-[EU_IT]
-name=Italy
-loc0=Albenga LIMG ------ ---
-loc1=Alghero LIEA ------ ---
-loc2=Amendola LIBA ------ ---
-loc3=Ancona LIPY ------ ---
-loc4=Aviano LIPA ------ ---
-loc5=Bari LIBD ------ ---
-loc6=Bergamo LIME ------ ---
-loc7=Bologna LIPE ------ ---
-loc8=Bolzano LIPB ------ ---
-loc9=Brindisi LIBR ------ ---
-loc10=Cagliari LIEE ------ ---
-loc11=Capo\\ Mele LIMU ------ ---
-loc12=Catania LICC ------ ---
-loc13=Cervia LIPC ------ ---
-loc14=Crotone LIBC ------ ---
-loc15=Dobbiaco LIVD ------ ---
-loc16=Decimomannu LIED ------ ---
-loc17=Ferrara LIPF ------ ---
-loc18=Firenze LIRQ ------ ---
-loc19=Forli LIPK ------ ---
-loc20=Frontone LIVF ------ ---
-loc21=Frosinone LIRH ------ ---
-loc22=Genova LIMJ ------ ---
-loc23=Ghedi LIPL ------ ---
-loc24=Gioia\\ del\\ Colle LIBV ------ ---
-loc25=Grosseto LIRS ------ ---
-loc26=Guidonia LIRG ------ ---
-loc27=Lamezia LICA ------ ---
-loc28=Lampedusa LICD ------ ---
-loc29=Latina LIRL ------ ---
-loc30=Lecce LIBN ------ ---
-loc31=Marino\\ di\\ Ravenna LIVM ------ ---
-loc32=Milano/Linate LIML ------ ---
-loc33=Milano/Malpensa LIMC ------ ---
-loc34=Monte\\ Argentario LIQO ------ ---
-loc35=Monte\\ Bisbino LIMO ------ ---
-loc36=Monte\\ Calamita LIRX ------ ---
-loc37=Monte\\ Cimone LIVC ------ ---
-loc38=Monte\\ Malanotte LIMY ------ ---
-loc39=Monte\\ Scuro LIBQ ------ ---
-loc40=Monte\\ Terminillo LIRK ------ ---
-loc41=Napoli LIRN ------ ---
-loc42=Novara/Cameri LIMN ------ ---
-loc43=Olbia LIEO ------ ---
-loc44=Padova LIPU ------ ---
-loc45=Paganella LIVP ------ ---
-loc46=Palermo LICJ ------ ---
-loc47=Pantelleria LICG ------ ---
-loc48=Passo\\ della\\ Cisa LIMT ------ ---
-loc49=Passo\\ dei\\ Giovi LIMV ------ ---
-loc50=Passo\\ Resia LIVE ------ ---
-loc51=Passo\\ Rolle LIVR ------ ---
-loc52=Perugia LIRZ ------ ---
-loc53=Pescara LIBP ------ ---
-loc54=Piacenza LIMS ------ ---
-loc55=Pian\\ Rosa LIMH ------ ---
-loc56=Pisa LIRP ------ ---
-loc57=Pratica\\ di\\ Mare LIRE ------ ---
-loc58=Reggio\\ Calabria LICR ------ ---
-loc59=Rieti LIQN ------ ---
-loc60=Rimini LIPR ------ ---
-loc61=Rivolto LIPI ------ ---
-loc62=Roma/Ciampino LIRA ------ ---
-loc63=Roma/Fiumicino LIRF ------ ---
-loc64=Roma/Urbe LIRU ------ ---
-loc65=Ronchi\\ de'\\ Legionari LIPQ ------ ---
-loc66=Sarzana LIQW ------ ---
-loc67=Sigonella LICZ ------ ---
-loc68=Taranto LIBG ------ ---
-loc69=Tarvisio LIVO ------ ---
-loc70=Trapani LICT ------ ---
-loc71=Torino/Bric\\ Della\\ Croce LIMK ------ ---
-loc72=Torino/Caselle LIMF ------ ---
-loc73=Trevico LIRT ------ ---
-loc74=Treviso/S.Angelo LIPH ------ ---
-loc75=Treviso/Istrana LIPS ------ ---
-loc76=Trieste LIVT ------ ---
-loc77=Venezia LIPZ ------ ---
-loc78=Vicenza LIPT ------ ---
-loc79=Villafranca LIPX ------ ---
-loc80=Viterbo LIRV ------ ---
-
-[EU_NL]
-name=Netherlands
-loc0=Amsterdam EHAM ------ ---
-loc1=Deelen EHDL ------ ---
-loc2=Den\\ Helder/De\\ Kooy EHKD ------ ---
-loc3=Eindhoven EHEH ------ ---
-loc4=Gilze-Rijen EHGR ------ ---
-loc5=Groningen EHGG ------ ---
-loc6=Leeuwarden EHLW ------ ---
-loc7=Maastricht EHBK ------ ---
-loc8=Rotterdam EHRD ------ ---
-loc9=Twenthe EHTW ------ ---
-loc10=Utrecht/Soesterberg EHSB ------ ---
-loc11=Valkenburg EHVB ------ ---
-loc12=Vlieland EHVL ------ ---
-loc13=Volkel EHVK ------ ---
-loc14=Woensdrecht EHWO ------ ---
-
-[EU_SP]
-name=Spain
-loc0=Alicante LEAL ------ ---
-loc1=Almeria LEAM ------ ---
-loc2=Asturias LEAS ------ ---
-loc3=Barcelona LEBL ------ ---
-loc4=Bilbao LEBB ------ ---
-loc5=Canarias/Fuerteventura GCFV ------ ---
-loc6=Canarias/Gran\\ Canaria GCLP ------ ---
-loc7=Canarias/Hierro GCHI ------ ---
-loc8=Canarias/La\\ Palma GCLA ------ ---
-loc9=Canarias/Lanzarote GCRR ------ ---
-loc10=Canarias/Tenerife\\ Sur GCTS ------ ---
-loc11=Canarias/Tenerife\\ Norte GCXO ------ ---
-loc12=Girona LEGE ------ ---
-loc13=Granada LEGR ------ ---
-loc14=Ibiza LEIB ------ ---
-loc15=Jerez LEJR ------ ---
-loc16=La\\ Coruna LECO ------ ---
-loc17=Madrid\\ (Barajas) LEMD ------ ---
-loc18=Madrid\\ (Cuatro\\ Vientos) LEVS ------ ---
-loc19=Malaga LEMG ------ ---
-loc20=Melilla GEML ------ ---
-loc21=Menorca LEMH ------ ---
-loc22=Murcia LELC ------ ---
-loc23=Palma\\ de\\ Mallorca LEPA ------ ---
-loc24=Pamplona LEPP ------ ---
-loc25=Reus LERS ------ ---
-loc26=San\\ Sebastian LESO ------ ---
-loc27=Santander LEXJ ------ ---
-loc28=Santiago LEST ------ ---
-loc29=Sevilla LEZL ------ ---
-loc30=Valencia LEVC ------ ---
-loc31=Vigo LEVX ------ ---
-loc32=Vitoria LEVT ------ ---
-loc33=Zaragoza LEZG ------ ---
-
-[EU_UK]
-name=United Kingdom
-loc0=Aberdeen EGPD :RQPMS ---
-loc1=Alderney EGJA ------ ---
-loc2=Belfast/Aldergrove EGAA :AAPMS ---
-loc3=Belfast/Harbour EGAC :AAPMS ---
-loc4=Benbecula EGPL :RAPMS ---
-loc5=Biggin\\ Hill EGKB :RBPMS ---
-loc6=Birmingham EGBB :BBPMS ---
-loc7=Blackpool EGNH :RCPMS ---
-loc8=Boscombe\\ Down EGDM ------ ---
-loc9=Boulmer EGQM :RTPMS ---
-loc10=Bournemouth EGHH :RIPMS ---
-loc11=Bristol EGGD :RDPMS ---
-loc12=Cambridge EGSC :RNPMS- ---
-loc13=Cardiff EGFF :RGPMS ---
-loc14=Carlisle EGNC :RCPMS ---
-loc15=Coventry EGBE :BBPMS ---
-loc16=Cranfield EGTC :RIPMS ---
-loc17=Culdrose EGDR :RD2PMS ---
-loc18=Dundee EGPN :RAPMS ---
-loc19=East\\ Midlands EGNX :BBPMS ---
-loc20=Edinburgh EGPH :RAPMS ---
-loc21=Eglington/Londonderry EGAE :AAPMS ---
-loc22=Exeter EGTE :RD2PMS ---
-loc23=Glasgow EGPF :RAPMS ---
-loc24=Guernsey EGJB ------ ---
-loc25=Humberside EGNJ :RTPMS ---
-loc26=Inverness EGPE :RQPMS ---
-loc27=Isle\\ of\\ Man EGNS :RCPMS ---
-loc28=Jersey EGJJ ------ ---
-loc29=Kinloss EGQK :RQPMS ---
-loc30=Leeds\\ and\\ Bradford EGNM :RYPMS ---
-loc31=Leuchars EGQL :RQPMS ---
-loc32=Liverpool EGGP :RCPMS ---
-loc33=London/City EGLC :RBPMS ---
-loc34=London/Gatwick EGKK :RBPMS ---
-loc35=London/Heathrow EGLL :RBPMS ---
-loc36=London/Stansted EGSS :RBPMS ---
-loc37=Lossiemouth EGQS :RQPMS ---
-loc38=Luton EGGW :RBPMS ---
-loc39=Lyneham EGDL :BBPMS ---
-loc40=Manchester EGCC :RCPMS ---
-loc41=Newcastle EGNT :RTPMS ---
-loc42=Norwich EGSH :RNPMS ---
-loc43=Plymouth EGHD :RD2PMS ---
-loc44=Portland EGDP :RIPMS ---
-loc45=Prestwick EGPK :RAPMS ---
-loc46=Saint\\ Mawgan EGDG :RD2PMS ---
-loc47=Scatsta EGPM :RQPMS ---
-loc48=Scilly\\ Isles EGHE :RD2PMS ---
-loc49=Shawbury EGOS :BBPMS ---
-loc50=Shoreham EGKA :RBPMS ---
-loc51=Southampton EGHI :RIPMS ---
-loc52=Southend EGMC :RBPMS ---
-loc53=Staverton EGBJ :RDPMS ---
-loc54=Stornoway EGPO :RQPMS ---
-loc55=Sumburgh EGPB :RQPMS ---
-loc56=Tees-Side EGNV :RTPMS ---
-loc57=Tiree EGPU :RQPMS ---
-loc58=Unst EGPW :RQPMS ---
-loc59=Valley EGOV ------ ---
-loc60=Wick EGPC :RQPMS ---
-loc61=Yeovilton EGDY :RDPMS ---
-
-[EU_YU]
-name=Yugoslavia
-loc0=Beograd LYBE ------ ---
-loc1=Nis LYNI ------ ---
-loc2=Podgorica\\ Titograd LYTI ------ ---
-loc3=Podgorica LYPG ------ ---
-loc4=Pristina LYPR ------ ---
-loc5=Tivat LYTU ------ ---
-
-[AF]
-name=Africa
-states=DZ EG LY MO ZA
-
-[AF_MO]
-name=Morocco
-loc0=Rabat GMME ------ ---
-
-[AF_ZA]
-name=South Africa
-loc0=Bethlehem\\ Airport FABM ------ ---
-loc1=Bloemfontein\\ J.\\ B.\\ M.\\ Hertzog FABL ------ ---
-loc2=Cape\\ Town\\ D.\\ F.\\ Malan FACT ------ ---
-loc3=Durban\\ Louis\\ Botha FADN ------ ---
-loc4=East\\ London FAEL ------ ---
-loc5=George\\ Airport FAGG ------ ---
-loc6=Jan\\ Smuts FAJS ------ ---
-loc7=Langebaanweg FALW ------ ---
-loc8=Lichtenburg FALT ------ ---
-loc9=Pietersburg FAPB ------ ---
-loc10=Port\\ Elizabeth FAPE ------ ---
-loc11=Pretoria FAPR ------ ---
-loc12=Springbok FASB ------ ---
-loc13=Upington FAUP ------ ---
-
-[AF_LY]
-name=Libya
-loc0=Benina HLLB ------ ---
-loc1=Tripoli HLLT ------ ---
-
-[AF_EG]
-name=Egypt
-loc0=Alexandria/Nouzha HEAX ------ ---
-loc1=Asswan HESN ------ ---
-loc2=Cairo HECA ------ ---
-loc3=Luxor HELX ------ ---
-loc4=Mersa\\ Matruh HEMM ------ ---
-loc5=Port\\ Said HEPS ------ ---
-loc6=Sharm\\ El\\ Sheikhintl HESH ------ ---
-
-[AF_DZ]
-name=Algeria
-loc0=Annaba DABB ------ ---
-loc1=Constantine DABC ------ ---
-loc2=Dar-El-Beida DAAG ------ ---
-loc3=Ghardaia DAUG ------ ---
-loc4=Hassi-Messaoud DAUH ------ ---
-loc5=In\\ Amenas DAUZ ------ ---
-loc6=Oran DAOO ------ ---
-loc7=Tamanrasset DAAT ------ ---
-loc8=Tebessa DABS ------ ---
-loc9=Tlemcen\\ Zenata DAON ------ ---
-
-[OZ]
-name=Australasia
-states=AU NZ AN
-
-[OZ_AU]
-name=Australia
-loc0=Adelaide YPAD ------ ---
-loc1=Alice\\ Springs YBAS ------ ---
-loc2=Brisbane YBBN ------ ---
-loc3=Broome YBRM ------ ---
-loc4=Cairns YBCS ------ ---
-loc5=Canberra YSCB ------ ---
-loc6=Christmas\\ Island YPXM ------ ---
-loc7=Cocos\\ Island YPCC ------ ---
-loc8=Dubbo YSDU ------ ---
-loc9=Hobart YMHB ------ ---
-loc10=Learmouth YPLM ------ ---
-loc11=Melbourne YMML ------ ---
-loc12=Norfolk\\ Island YSNF ------ ---
-loc13=Perth YPPH ------ ---
-loc14=Port\\ Hedland YPPD ------ ---
-loc15=Sydney YSSY ------ ---
-loc16=Townsville YBTL ------ ---
-
-[OZ_NZ]
-name=New Zealand
-loc0=Auckland NZAA ------ ---
-loc1=Christchurch NZCH ------ ---
-loc2=Wellington NZWN ------ ---
-
-[OZ_AN]
-name=Antartica
-loc0=Williams\\ Field NZCM ------ ---
-
-[AS]
-name=Asia
-states=CN HK IN JP KR KP PK SG TW VN
-
-[AS_VN]
-name=Viet Nam
-loc=Da\\ Nang VVDN ------ ---
-loc=Ha\\ Noi VVNB ------ ---
-loc=Ho\\ Chi\\ Minh VVTS ------ ---
-
-[AS_KR]
-name=Korea, Republic of
-loc0=Camp\\ Stanley/H-207 RKSX ------ ---
-loc1=Cheju RKPC ------ ---
-loc2=Chongju\\ Ab RKTU ------ ---
-loc3=Mangilsan\\ Ab RKTM ------ ---
-loc4=Osan\\ Ab RKSO ------ ---
-loc5=Paekado RKTB ------ ---
-loc6=Paengnyongdo\\ Ab RKSP ------ ---
-loc7=Pohang\\ Ab RKTH ------ ---
-loc8=Pusan/Kimhae RKPK ------ ---
-loc9=Pyongtaek\\ Ab RKSG ------ ---
-loc10=Sangju RKTS ------ ---
-loc11=Seoul/Kimp'O\\ International\\ Airport RKSS ------ ---
-loc12=Seoul/Yongdungp'O\\ Rokaf\\ Wc RKSF ------ ---
-loc13=Seoul\\ E\\ Ab RKSM ------ ---
-loc14=Songmu\\ Ab RKTE ------ ---
-loc15=Suwon\\ Ab RKSW ------ ---
-loc16=Taegu RKTT ------ ---
-loc17=Taegu\\ Ab RKTN ------ ---
-loc18=Taejon RKTF ------ ---
-loc19=Ulsan RKPU ------ ---
-loc20=Woong\\ Cheon RKTW ------ ---
-loc21=Yechon\\ Ab RKTY ------ ---
-loc22=Yeoju\\ Range RKSU ------ ---
-loc23=Yeonpyeungdo RKSQ ------ ---
-loc24=Yongsan/H-208\\ Hp RKSY ------ ---
-loc25=Yosu RKJY ------ ---
-
-[AS_KP]
-name=Korea, Democratic People's Republic of
-loc0=Pyongyang ZKPY ------ ---
-
-[AS_HK]
-name=Hong Kong
-loc=Hong\\ Kong VHHH ------ ---
-
-[AS_PK]
-name=Pakistan
-loc0=Islamabad OPRN ------ ---
-loc1=Karachi OPKC ------ ---
-loc2=Lahore OPLA ------ ---
-loc3=Nawabshah OPNH ------ ---
-
-[AS_IN]
-name=India
-loc0=Ahmadabad VAAH ------ ---
-loc1=Amritsar VIAR ------ ---
-loc2=Bombay/Santacruz VABB ------ ---
-loc3=Calcutta/Dum\\ Dum VECC ------ ---
-loc4=Hyderabad VOHY ------ ---
-loc5=Madras/Minambakkam VOMM ------ ---
-loc6=Nagpur\\ Sonegaon VANP ------ ---
-loc7=New\\ Delhi/Palam VIDP ------ ---
-loc8=Patna VEPT ------ ---
-loc9=Thiruvananthapuram VOTV ------ ---
-loc10=Tiruchchirapalli VOTR ------ ---
-loc11=Varanasi/Babatpur VIBN ------ ---
-
-[AS_CN]
-name=People's Republic of China
-loc0=Beijing ZBAA ------ ---
-loc1=Chengdu ZUUU ------ ---
-loc2=Dalian ZYTL ------ ---
-loc3=Guangzhou ZGGG ------ ---
-loc4=Hangzhou ZSHC ------ ---
-loc5=Hong\\ Kong VHHH ------ ---
-loc6=Kunming ZPPP ------ ---
-loc7=Lanzhou ZLLL ------ ---
-loc8=Nanning ZGNN ------ ---
-loc9=Shanghai ZSSS ------ ---
-loc10=Taiyuan ZBYN ------ ---
-loc11=Tianjin ZBTJ ------ ---
-loc12=Urumqi ZWWW ------ ---
-loc13=Xiamen ZSAM ------ ---
-
-[AS_JP]
-name=Japan
-loc0=Akeno\\ Ab RJOE ------ ---
-loc1=Akita\\ Airport RJSK ------ ---
-loc2=Amami\\ Airport RJKA ------ ---
-loc3=Aomori\\ Airport RJSA ------ ---
-loc4=Asahikawa\\ Ab RJCA ------ ---
-loc5=Asahikawa\\ Airport RJEC ------ ---
-loc6=Ashiya\\ Ab RJFA ------ ---
-loc7=Atsugi\\ US\\ NAS RJTA ------ ---
-loc8=Chichijima RJAO ------ ---
-loc9=Chitose\\ Ab RJCC ------ ---
-loc10=Chitose\\ ASDF RJCJ ------ ---
-loc11=Chofu\\ Airport RJTF ------ ---
-loc12=Fuji\\ Ab RJAT ------ ---
-loc13=Fukue\\ Airport RJFE ------ ---
-loc14=Fukui\\ Airport RJNF ------ ---
-loc15=Fukuoka\\ Airport RJFF ------ ---
-loc16=Gifu\\ Ab RJNG ------ ---
-loc17=Hachijojima\\ Airport RJTH ------ ---
-loc18=Hachinohe\\ Ab RJSH ------ ---
-loc19=Hakodate\\ Airport RJCH ------ ---
-loc20=Hamamatsu\\ Ab RJNH ------ ---
-loc21=Hanamaki\\ Airport RJSI ------ ---
-loc22=Hiroshima\\ Airport RJOA ------ ---
-loc23=Hofu\\ Ab RJOF ------ ---
-loc24=Hyakuri\\ Ab RJAH ------ ---
-loc25=Ichikawa RJAI ------ ---
-loc26=Iki\\ Airport RJDB ------ ---
-loc27=Iruma\\ Ab RJTJ ------ ---
-loc28=Iwakuni\\ MCAS RJOI ------ ---
-loc29=Iwojima RJAW ------ ---
-loc30=Izumo\\ Airport RJOC ------ ---
-loc31=Kadena\\ Ab RODN ------ ---
-loc32=Kagoshima\\ Airport RJFK ------ ---
-loc33=Kamigoto RJDK ------ ---
-loc34=Kanoya\\ Ab RJFY ------ ---
-loc35=Kansai\\ International\\ Airport RJBB ------ ---
-loc36=Kasumigaura\\ Ab RJAK ------ ---
-loc37=Kasuminome\\ Ab RJSU ------ ---
-loc38=Kikai\\ Island RJKI ------ ---
-loc39=Kisarazu\\ Ab RJTK ------ ---
-loc40=Kitakyushu\\ Airport RJFR ------ ---
-loc41=Kochi\\ Airport RJOK ------ ---
-loc42=Komatsu\\ Ab RJNK ------ ---
-loc43=Komatsujima\\ Ab RJOP ------ ---
-loc44=Kumamoto\\ Airport RJFT ------ ---
-loc45=Kushiro\\ Airport RJCK ------ ---
-loc46=Matsumoto\\ Airport RJAF ------ ---
-loc47=Matsushima\\ Ab RJST ------ ---
-loc48=Matsuyama\\ Airport RJOM ------ ---
-loc49=Memambetsu\\ Airport RJCM ------ ---
-loc50=Metabaru\\ Ab RJDM ------ ---
-loc51=Miho\\ Ab RJOH ------ ---
-loc52=Minamitorishima RJAM ------ ---
-loc53=Misawa\\ Ab RJSM ------ ---
-loc54=Miyakejima\\ Airport RJTQ ------ ---
-loc55=Miyazaki\\ Airport RJFM ------ ---
-loc56=Mombetsu\\ Airport RJEB ------ ---
-loc57=Nagasaki\\ Airport RJFU ------ ---
-loc58=Nagoya\\ Airport RJNN ------ ---
-loc59=Naha\\ Airport ROAH ------ ---
-loc60=Nakashibetsu\\ Airport RJCN ------ ---
-loc61=Nankishirahama\\ Airport RJBD ------ ---
-loc62=New\\ Tokyo\\ International\\ Airport RJAA ------ ---
-loc63=Niigata\\ Airport RJSN ------ ---
-loc64=Nyutabaru\\ Ab RJFN ------ ---
-loc65=Obihiro\\ Airport RJCB ------ ---
-loc66=Oita\\ Airport RJFO ------ ---
-loc67=Ojika\\ Island RJDO ------ ---
-loc68=Okayama\\ Airport RJOB ------ ---
-loc69=Oki\\ Airport RJNO ------ ---
-loc70=Okinoerabu RJKB ------ ---
-loc71=Okushiri\\ Island RJEO ------ ---
-loc72=Ominato\\ Ab RJSO ------ ---
-loc73=Osaka\\ International\\ Airport RJOO ------ ---
-loc74=Oshima\\ Airport RJTO ------ ---
-loc75=Ozuki\\ Ab RJOZ ------ ---
-loc76=Rebun\\ Island RJCR ------ ---
-loc77=Rishiri\\ Island RJER ------ ---
-loc78=Sapporo\\ Ab RJCO ------ ---
-loc79=Sendai\\ Airport RJSS ------ ---
-loc80=Shimofusa\\ Ab RJTL ------ ---
-loc81=Shizuhama\\ Ab RJNY ------ ---
-loc82=Tachikawa\\ Ab RJTC ------ ---
-loc83=Tajima RJBT ------ ---
-loc84=Takamatsu\\ Airport RJOT ------ ---
-loc85=Tanegashima\\ Airport RJFG ------ ---
-loc86=Tateyama\\ Ab RJTE ------ ---
-loc87=Tokachi\\ GSDF RJCT ------ ---
-loc88=Tokunoshima\\ Island RJKN ------ ---
-loc89=Tokushima\\ Ab RJOS ------ ---
-loc90=Tokyo\\ Heliport RJTI ------ ---
-loc91=Tokyo\\ International\\ Airport RJTT ------ ---
-loc92=Tokyo\\ New\\ International\\ Airport RJAA ------ ---
-loc93=Tottori\\ Airport RJOR ------ ---
-loc94=Toyama\\ Airport RJNT ------ ---
-loc95=Tsuiki\\ Ab RJFZ ------ ---
-loc96=Tsushima\\ Airport RJDT ------ ---
-loc97=Utsunomiya\\ Ab RJTU ------ ---
-loc98=Wakkanai\\ Airport RJCW ------ ---
-loc99=Yakushima RJFC ------ ---
-loc100=Yamagata\\ Airport RJSC ------ ---
-loc101=Yamaguchi\\ Ube\\ Airport RJDC ------ ---
-loc102=Yao\\ Airport RJOY ------ ---
-loc103=Yokosuka\\ Fwf RJTX ------ ---
-loc104=Yokota\\ Ab RJTY ------ ---
-loc105=Zama\\ Airfield RJTR ------ ---
-
-[AS_SG]
-name=Singapore
-loc0=Singapore WSSS ------ ---
-
-[AS_TW]
-name=Taiwan
-loc0=Chia\\ Tung RCFS ------ ---
-loc1=Chiang\\ Kai\\ Shek RCTP ------ ---
-loc2=Chiayi RCKU ------ ---
-loc3=Chihhang RCQS ------ ---
-loc4=Chinmem/Shatou RCBS ------ ---
-loc5=Dongsha RCLM ------ ---
-loc6=Dongshi RCNO ------ ---
-loc7=Feng\\ Nin RCFN ------ ---
-loc8=Hengchun RCKW ------ ---
-loc9=Hsinchu RCPO ------ ---
-loc10=Hulien RCYU ------ ---
-loc11=Ilan RCMS ------ ---
-loc12=Kangshan RCAY ------ ---
-loc13=Kaohsiung RCKH ------ ---
-loc14=Makung RCQC ------ ---
-loc15=Mazu RCFG ------ ---
-loc16=Pa\\ Kuei/Bakuai RCUK ------ ---
-loc17=Pingtung\\ North RCSQ ------ ---
-loc18=Pingtung\\ South RCDC ------ ---
-loc19=Sungshan/Taipei RCSS ------ ---
-loc20=Taichung RCLG ------ ---
-loc21=Tainan RCNN ------ ---
-loc22=Taoyuan RCGM ------ ---
-loc23=Wuchia\\ Observatory RCMQ ------ ---
-
-[M_]
-name=Central and South America
-states=BS BZ KY CU CR DO SV GT HT HN JM NI PA AR BR BO CL CO EC PY PE SR UY VE
-
-[M__BS]
-name=Bahamas
-loc0=Freeport MYGF ------ ---
-loc1=Nassau MYNN ------ ---
-
-[M__BZ]
-name=Belize
-loc0=Belize MZBZ ------ ---
-
-[M__KY]
-name=Cayman Islands
-loc0=Grand\\ Cayman MWCR ------ ---
-
-[M__CU]
-name=Cuba
-loc0=Baracoa MUBA ------ ---
-loc1=Bayamo MUBY ------ ---
-loc2=Camaguey MUCM ------ ---
-loc3=Cayo\\ Largo\\ del\\ Sur MUCL ------ ---
-loc4=Guantanamo MUGT ------ ---
-loc5=Habana MUHA ------ ---
-loc6=Holguin MUHG ------ ---
-loc7=Las\\ Tunas MUVT ------ ---
-loc8=Manzanillo MUMZ ------ ---
-loc9=Moa MUMO ------ ---
-loc10=Nueva\\ Gerona MUNG ------ ---
-loc11=Santiago\\ de\\ Cuba MUCU ------ ---
-loc12=Varadero MUVR ------ ---
-loc13=Venezuela MUCA ------ ---
-
-[M__CR]
-name=Costa Rica
-loc0=Chacarita MRCH ------ ---
-loc1=Juan\\ Santamaria MROC ------ ---
-loc2=Liberia MRLB ------ ---
-loc3=Puerto\\ Limon MRLM ------ ---
-loc4=Tobias\\ Bolanos MRPV ------ ---
-
-[M__DO]
-name=Dominican Republic
-loc0=La\\ Romana MDLR ------ ---
-loc1=Las\\ Americas MDSD ------ ---
-loc2=Puerto\\ Plata MDPP ------ ---
-loc3=Punta\\ Cana MDPC ------ ---
-loc4=Santiago MDST ------ ---
-
-[M__SV]
-name=El Salvador
-loc0=Acajutla MSAC ------ ---
-loc1=El\\ Salvador\\ Int. MSLP ------ ---
-loc2=San\\ Miguel MSSM ------ ---
-loc3=San\\ Salvador MSSS ------ ---
-loc4=Santa\\ Ana MSSA ------ ---
-
-[M__GT]
-name=Guatemala
-loc0=Flores MGFL ------ ---
-loc1=Guatemala MGGT ------ ---
-loc2=Huehuetenango MGHT ------ ---
-loc3=Puerto\\ Barrios MGPB ------ ---
-loc4=San\\ Jose MGSJ ------ ---
-
-[M__HT]
-name=Haiti
-loc0=Port-Au-Prince MTPP ------ ---
-
-[M__HN]
-name=Honduras
-loc0=Amapala MHAM ------ ---
-loc1=Catacamas MHCA ------ ---
-loc2=Choluteca MHCH ------ ---
-loc3=La\\ Ceiba MHLC ------ ---
-loc4=La\\ Esperanza MHLE ------ ---
-loc5=La\\ Mesa MHLM ------ ---
-loc6=Nueva\\ Ocotepeque MHSC ------ ---
-loc7=Puerto\\ Lempira MHPL ------ ---
-loc8=Roatan MHRO ------ ---
-loc9=Santa\\ Rosa\\ de\\ Copan MHSR ------ ---
-loc10=Tegucigalpa MHTG ------ ---
-loc11=Tela MHTE ------ ---
-loc12=Yoro MHYR ------ ---
-
-[M__JM]
-name=Jamaica
-loc0=Kingston MKJP ------ ---
-loc1=Montego\\ Bay MKJA ------ ---
-
-[M__NI]
-name=Nicaragua
-loc0=Bluefields MNBL ------ ---
-loc1=Chinandega MNCH ------ ---
-loc2=Jinotega MNJG ------ ---
-loc3=Juigalpa MNJU ------ ---
-loc4=Managua MNMG ------ ---
-loc5=Puerto\\ Cabezas MNPC ------ ---
-loc6=Rivas MNRS ------ ---
-
-[M__PA]
-name=Panama
-loc0=Bocas\\ del\\ Toro MPBO ------ ---
-loc1=David MPDA ------ ---
-loc2=Howard\\ AFB MPHO ------ ---
-loc3=Panama MPMG ------ ---
-loc4=Santiago MPSA ------ ---
-loc5=Tocumen MPTO ------ ---
-
-[M__BO]
-name=Bolivia
-loc0=Camiri SLCA ------ ---
-loc1=Cobija SLCO ------ ---
-loc2=Cochabamba SLCB ------ ---
-loc3=Concepcion SLCP ------ ---
-loc4=La\\ Paz/Alto SLLP ------ ---
-loc5=Magdalena SLMG ------ ---
-loc6=Oruro SLOR ------ ---
-loc7=Potosi SLPO ------ ---
-loc8=Puerto\\ Suarez SLPS ------ ---
-loc9=Reyes SLRY ------ ---
-loc10=Riberalta SLRI ------ ---
-loc11=Robore SLRB ------ ---
-loc12=Rurrenabaque SLRQ ------ ---
-loc13=San\\ Ignacio\\ De\\ Velasco SLSI ------ ---
-loc14=San\\ Joaquin SLJO ------ ---
-loc15=San\\ Jose\\ De\\ Chiquitos SLJE ------ ---
-loc16=Santa\\ Ana SLSA ------ ---
-loc17=Sucre SLSU ------ ---
-loc18=Tarija SLTJ ------ ---
-loc19=Trinidad SLTR ------ ---
-loc20=Villamontes SLVM ------ ---
-loc21=Viru-Viru SLVR ------ ---
-loc22=Yacuiba SLYA ------ ---
-
-[M__CL]
-name=Chile
-loc0=Antofagasta SCFA ------ ---
-loc1=Arica SCAR ------ ---
-loc2=Concepcion SCIE ------ ---
-loc3=Iquique/Diego\\ Arac SCDA ------ ---
-loc4=Pudahuel SCEL ------ ---
-loc5=Puerto\\ Montt SCTE ------ ---
-loc6=Punta\\ Arenas SCCI ------ ---
-
-[M__CO]
-name=Colombia
-loc0=Barranquilla/Ernestocortissoz SKBQ ------ ---
-loc1=Bogota/Eldorado SKBO ------ ---
-loc2=Bucaramanga/Palonegro SKBG ------ ---
-loc3=Cali/Alfonso\\ Bonillaaragon SKCL ------ ---
-loc4=Cartagena/Rafael\\ Nunez SKCG ------ ---
-loc5=Leticia/Vasquez\\ Cobo SKLT ------ ---
-loc6=Pereira/Matecana SKPE ------ ---
-loc7=Rionegro/J.M.Cordova SKRG ------ ---
-loc8=San\\ Andres\\ Isla/Sesquicentenario SKSP ------ ---
-loc9=Santa\\ Marta/Simon\\ Bolivar SKSM ------ ---
-
-[M__EC]
-name=Ecuador
-loc0=Guayaquil/Simon\\ Bolivar SEGU ------ ---
-loc1=Manta SEMT ------ ---
-loc2=Quito/Mariscal\\ Sucre SEQU ------ ---
-
-[M__PY]
-name=Paraguay
-loc0=Asuncion SGAS ------ ---
-loc1=Guarany SGES ------ ---
-
-[M__PE]
-name=Peru
-loc0=Andahuayla SPHY ------ ---
-loc1=Arequipa SPQU ------ ---
-loc2=Ayacucho SPHO ------ ---
-loc3=Chiclayo SPHI ------ ---
-loc4=Cuzco SPZO ------ ---
-loc5=Huanuco SPNC ------ ---
-loc6=Iquitos SPQT ------ ---
-loc7=Juanjui SPJI ------ ---
-loc8=Juliaca SPJL ------ ---
-loc9=Lima-Callao SPIM ------ ---
-loc10=Pisco SPSO ------ ---
-loc11=Pucallpa SPCL ------ ---
-loc12=Puerto\\ Maldonado SPTU ------ ---
-loc13=Rioja SPJA ------ ---
-loc14=Tacna SPTN ------ ---
-loc15=Talara SPYL ------ ---
-loc16=Yurimaguas SPMS ------ ---
-
-[M__SR]
-name=Suriname
-loc0=Johan\\ A.\\ Pengel SMJP ------ ---
-
-[M__UY]
-name=Uruguay
-loc0=Artigas SUAG ------ ---
-loc1=Capitan\\ Corbeta SULS ------ ---
-loc2=Colonia SUCA ------ ---
-loc3=Durazno SUDU ------ ---
-loc4=Maldonado/Punta\\ Est SUPE ------ ---
-loc5=Melilla SUAA ------ ---
-loc6=Montevideo/Carrasco SUMU ------ ---
-loc7=Paysandu SUPU ------ ---
-loc8=Rivera SURV ------ ---
-loc9=Salto SUSO ------ ---
-loc10=Tacuarembo SUTB ------ ---
-
-[M__VE]
-name=Venezuela
-loc0=Acarigua SVAC ------ ---
-loc1=Barcelona SVBC ------ ---
-loc2=Barinas SVBI ------ ---
-loc3=Barquisimeto SVBM ------ ---
-loc4=Calabozo SVCL ------ ---
-loc5=Caracas\\ Maiquetia SVMI ------ ---
-loc6=Ciudad\\ Bolivar SVCB ------ ---
-loc7=Coro SVCR ------ ---
-loc8=Cumana SVCU ------ ---
-loc9=Guanare SVGU ------ ---
-loc10=Maracaibo-La\\ Chinita SVMC ------ ---
-loc11=Maracay-B.A.Sucre SVBS ------ ---
-loc12=Margarita SVMG ------ ---
-loc13=Mene\\ Grande SVMN ------ ---
-loc14=Merida SVMD ------ ---
-loc15=San\\ Antonio\\ Del\\ Tachira SVSA ------ ---
-loc16=San\\ Fernando\\ De\\ Apure SVSR ------ ---
-loc17=Valera* SVVL ------ ---
-loc18=Caracas\\ La\\ Carlota SVFM ------ ---
-
-[M__AR]
-name=Argentina
-loc0=Aeroparque SABE ------ ---
-loc1=Bahia\\ Blanca SAZB ------ ---
-loc2=Bariloche SAZS ------ ---
-loc3=Comodoro\\ Rivadavia SAVC ------ ---
-loc4=Concordia SAAC ------ ---
-loc5=Cordoba SACO ------ ---
-loc6=Corrientes SARC ------ ---
-loc7=Don\\ Torcuato SADD ------ ---
-loc8=Ezeiza SAEZ ------ ---
-loc9=Formosa SARF ------ ---
-loc10=Iguazu SARI ------ ---
-loc11=Jujuy SASJ ------ ---
-loc12=Mar\\ Del\\ Plata SAZM ------ ---
-loc13=Mendoza SAME ------ ---
-loc14=Neuquen SAZN ------ ---
-loc15=Paso\\ De\\ Los\\ Libres SARL ------ ---
-loc16=Posadas SARP ------ ---
-loc17=Resistencia SARE ------ ---
-loc18=Rio\\ Gallegos SAWG ------ ---
-loc19=Rio\\ Grande SAWE ------ ---
-loc20=Rosario SAAR ------ ---
-loc21=Salta SASA ------ ---
-loc22=San\\ Juan SANU ------ ---
-loc23=Santiago\\ Del\\ Estero SANE ------ ---
-loc24=Sauce\\ Viejo SAAV ------ ---
-loc25=Trelew SAVT ------ ---
-loc26=Tucuman SANT ------ ---
-loc27=Villa\\ Reynolds SAOR ------ ---
-
-[M__BR]
-name=Brazil
-loc0=Afonsos SBAF ------ ---
-loc1=Altamira SBHT ------ ---
-loc2=Aracaju SBAR ------ ---
-loc3=Bage SBBG ------ ---
-loc4=Bauru SBBU ------ ---
-loc5=Belem SBBE ------ ---
-loc6=Belo\\ Horizonte SBCF ------ ---
-loc7=Belo\\ Horizonte\\ Apt SBBH ------ ---
-loc8=Boa\\ Vista SBBV ------ ---
-loc9=Brasilia SBBR ------ ---
-loc10=Campinas SBKP ------ ---
-loc11=Campo\\ Grande SBCG ------ ---
-loc12=Caravelas SBCV ------ ---
-loc13=Conceicao\\ Do\\ Araguaia SBAA ------ ---
-loc14=Corumba SBCR ------ ---
-loc15=Cuiaba SBCY ------ ---
-loc16=Curitiba SBBI ------ ---
-loc17=Curitiba\\ Apt SBCT ------ ---
-loc18=Eduardo\\ Gomes\\ International SBEG ------ ---
-loc19=Fernando\\ De\\ Noronha SBFN ------ ---
-loc20=Florianopolis SBFL ------ ---
-loc21=Fortaleza SBFZ ------ ---
-loc22=Foz\\ Do\\ Iguacu SBFI ------ ---
-loc23=Galeao SBGL ------ ---
-loc24=Goiania SBGO ------ ---
-loc25=Guaratingueta SBGW ------ ---
-loc26=Guarulhos SBGR ------ ---
-loc27=Itaituba SBIH ------ ---
-loc28=Londrina SBLO ------ ---
-loc29=Macae SBME ------ ---
-loc30=Macapa SBMQ ------ ---
-loc31=Maceio SBMO ------ ---
-loc32=Manaus SBMN ------ ---
-loc33=Maraba SBMA ------ ---
-loc34=Marte SBMT ------ ---
-loc35=Natal SBNT ------ ---
-loc36=Pelotas SBPK ------ ---
-loc37=Pirassununga SBYS ------ ---
-loc38=Pocos\\ De\\ Caldas SBPC ------ ---
-loc39=Ponta\\ Pora SBPP ------ ---
-loc40=Porto\\ Alegre SBCO ------ ---
-loc41=Porto\\ Alegre\\ Apt SBPA ------ ---
-loc42=Porto\\ Velho SBPV ------ ---
-loc43=Presidente\\ Prudente SBDN ------ ---
-loc44=Recife SBRF ------ ---
-loc45=Rio\\ /\\ Jacarepagua SBJR ------ ---
-loc46=Rio\\ De\\ Janeiro SBRJ ------ ---
-loc47=Salvador SBSV ------ ---
-loc48=Santa\\ Cruz SBSC ------ ---
-loc49=Santa\\ Maria SBSM ------ ---
-loc50=Santarem SBSN ------ ---
-loc51=Santos SBST ------ ---
-loc52=Sao\\ Jose\\ Dos\\ Campo SBSJ ------ ---
-loc53=Sao\\ Luiz SBSL ------ ---
-loc54=Sao\\ Paulo SBSP ------ ---
-loc55=Tabatinga SBTT ------ ---
-loc56=Teresina SBTE ------ ---
-loc57=Tucurui SBTU ------ ---
-loc58=Uberaba SBUR ------ ---
-loc59=Uruguaiana SBUG ------ ---
-loc60=Vilhena SBVH ------ ---
-loc61=Vitoria SBVT ------ ---
-
-[AT]
-name=Atlantic
-states=AG PR
-
-[AT_PR]
-name=Puerto Rico
-loc0=Aquadilla TJBQ ------ ---
-loc1=San\\ Juan TJSJ ------ ---
-loc2=Mayaguez TJMZ ------ ---
-loc3=Ponce TJPS ------ ---
-
-[AT_AG]
-name=Antigua and Barbuda
-loc0=Antigua TAPA ------ ---
-
diff --git a/my-evolution/Locations.h b/my-evolution/Locations.h
deleted file mode 100644
index 5f554a78e1..0000000000
--- a/my-evolution/Locations.h
+++ /dev/null
@@ -1,2538 +0,0 @@
-N_("Aarhus")
-N_("Abakan")
-N_("Abbotsford")
-N_("Aberdeen")
-N_("Abha")
-N_("Abilene")
-N_("Abingdon")
-N_("Abu Dhabi")
-N_("Abu Dhabi - Bateen")
-N_("Acajutla")
-N_("Acapulco")
-N_("Acarigua")
-N_("Adak")
-N_("Adana")
-N_("Adana/Incirlik")
-N_("Adelaide")
-N_("Aden")
-N_("Adrar")
-N_("Aeroparque")
-N_("Aeropuerto del Norte")
-N_("Afonsos")
-N_("Africa")
-N_("Afyon")
-N_("Agen")
-N_("Aguascaliantes")
-N_("Ahmadabad")
-N_("Ahwaz")
-N_("Ainsworth")
-N_("Air Force")
-N_("Ajaccio/Campo dell'Oro")
-N_("Akeno Ab")
-N_("Akita Airport")
-N_("Akron")
-N_("Akrotiri")
-N_("Alabama")
-N_("Al Ahsa")
-N_("Al Ain")
-N_("Alamogordo")
-N_("Alamosa")
-N_("Alaska")
-N_("Al Baha")
-N_("Albania")
-N_("Albany")
-N_("Albenga")
-N_("Alberta")
-N_("Alborg")
-N_("Albuquerque")
-N_("Alderney")
-N_("Alesund")
-N_("Alexandria")
-N_("Alexandria-Esler")
-N_("Alexandria/Nouzha")
-N_("Alexandroupolis")
-N_("Algeria")
-N_("Alghero")
-N_("Algona")
-N_("Alicante")
-N_("Alice")
-N_("Alice Springs")
-N_("Al-Jouf")
-N_("Allentown")
-N_("Alliance")
-N_("Alma")
-N_("Almeria")
-N_("Alpena")
-N_("Al Qaysumah")
-N_("Alta")
-N_("Altamira")
-N_("Alton")
-N_("Altoona")
-N_("Alturas")
-N_("Altus")
-N_("Amami Airport")
-N_("Amapala")
-N_("Amarillo")
-N_("Amasya")
-N_("Ambler")
-N_("Amelia")
-N_("Amendola")
-N_("Ames")
-N_("Amritsar")
-N_("Amsterdam")
-N_("Anadyr")
-N_("Anaktuvuk")
-N_("Anapa")
-N_("Anchorage")
-N_("Anchorage - Elmendorf AFB")
-N_("Ancona")
-N_("Andahuayla")
-N_("Anderson")
-N_("Andoya")
-N_("Andravida")
-N_("Andrews AFB")
-N_("Angleton")
-N_("Aniak")
-N_("Ankara/Esenboga")
-N_("Ankara/Etimesgut")
-N_("Annaba")
-N_("Ann Arbor")
-N_("Annette")
-N_("Anniston")
-N_("Antalya")
-N_("Antartica")
-N_("Antigo")
-N_("Antigua")
-N_("Antigua and Barbuda")
-N_("Antofagasta")
-N_("Antwerpen/Deurne")
-N_("Aomori Airport")
-N_("Apalachicola")
-N_("Appleton")
-N_("Aquadilla")
-N_("Aracaju")
-N_("Arad")
-N_("Arar")
-N_("Araxos")
-N_("Arcata")
-N_("Ardmore")
-N_("Arequipa")
-N_("Argentina")
-N_("Arica")
-N_("Arizona")
-N_("Arkansas")
-N_("Arkhangelsk")
-N_("Arlington")
-N_("Artigas")
-N_("Asahikawa Ab")
-N_("Asahikawa Airport")
-N_("Ashburnam")
-N_("Asheville")
-N_("Ashfield")
-N_("Ashiya Ab")
-N_("Ashland")
-N_("Asia")
-N_("Aspen")
-N_("Asswan")
-N_("Astoria")
-N_("Astrakhan")
-N_("Asturias")
-N_("Asuncion")
-N_("Athens")
-N_("Athinai")
-N_("Atlanta")
-N_("Atlantic")
-N_("Atlantic City")
-N_("Atsugi US NAS")
-N_("Auburn")
-N_("Auckland")
-N_("Augsburg")
-N_("Augusta")
-N_("Aurora")
-N_("Austin")
-N_("Australasia")
-N_("Australia")
-N_("Austria")
-N_("Avalon")
-N_("Aviano")
-N_("Ayacucho")
-N_("Bage")
-N_("Bagotville")
-N_("Bahamas")
-N_("Bahia Blanca")
-N_("Bahias de Huatulco")
-N_("Bahrain")
-N_("Baker City")
-N_("Bakersfield")
-N_("Bale-Mulhouse")
-N_("Balikesir")
-N_("Balikesir/Bandirma")
-N_("Ball Mountain")
-N_("Baltimore")
-N_("Baltimore-Glen Burnie")
-N_("Banak")
-N_("Bandarabbass")
-N_("Bangor")
-N_("Baracoa")
-N_("Barbers Point")
-N_("Barcelona")
-N_("Bardufoss")
-N_("Bar Harbor")
-N_("Bari")
-N_("Bariloche")
-N_("Barinas")
-N_("Barking Sand")
-N_("Barksdale")
-N_("Barnaul")
-N_("Barquisimeto")
-N_("Barranquilla/Ernestocortissoz")
-N_("Barrow")
-N_("Barter Island")
-N_("Bartlesville")
-N_("Bartow")
-N_("Bastia")
-N_("Batesville")
-N_("Batman")
-N_("Baton Rouge")
-N_("Battle Creek")
-N_("Battle Mountain")
-N_("Bauru")
-N_("Bayamo")
-N_("Bayreuth")
-N_("Beatrice")
-N_("Beaufort")
-N_("Beaumont")
-N_("Beaumont-Port Arthur")
-N_("Beauvais-Tille")
-N_("Beauvechain")
-N_("Beckley")
-N_("Bedford")
-N_("Beijing")
-N_("Beirut")
-N_("Beja")
-N_("Belem")
-N_("Belfast/Aldergrove")
-N_("Belfast/Harbour")
-N_("Belgium")
-N_("Belgorod")
-N_("Belize")
-N_("Belleville")
-N_("Bellingham")
-N_("Belmar-Farmingdale")
-N_("Belo Horizonte")
-N_("Belo Horizonte Apt")
-N_("Bemidji")
-N_("Benbecula")
-N_("Benina")
-N_("Benton Harbor")
-N_("Bentonville")
-N_("Beograd")
-N_("Bergamo")
-N_("Bergen")
-N_("Bergstrom AFB")
-N_("Berlevag")
-N_("Berlin")
-N_("Berlin-Tegel")
-N_("Berlin-Tempelhof")
-N_("Bern")
-N_("Bethel")
-N_("Bethlehem Airport")
-N_("Bettles")
-N_("Beverly")
-N_("Biarritz-Bayonne")
-N_("Bicycle Lake")
-N_("Biggin Hill")
-N_("Big Piney")
-N_("Big River Lake")
-N_("Bilbao")
-N_("Billings")
-N_("Billund")
-N_("Binghamton")
-N_("Birmingham")
-N_("Bisha")
-N_("Bishop")
-N_("Bismark")
-N_("Blackpool")
-N_("Blagoveschensk")
-N_("Blanding")
-N_("Block Island")
-N_("Bloemfontein J. B. M. Hertzog ")
-N_("Bloomington")
-N_("Blue Canyon")
-N_("Bluefield")
-N_("Bluefields")
-N_("Blythe")
-N_("Boa Vista")
-N_("Bocas del Toro")
-N_("Bodo")
-N_("Bogota/Eldorado")
-N_("Boise")
-N_("Bolivia")
-N_("Bologna")
-N_("Bolzano")
-N_("Bombay/Santacruz")
-N_("Boone")
-N_("Bordeaux")
-N_("Borger")
-N_("Bornholm")
-N_("Boscombe Down")
-N_("Bosnia-Herzegovina")
-N_("Boston")
-N_("Boulmer")
-N_("Bourges")
-N_("Bournemouth")
-N_("Bowling Green")
-N_("Bozeman")
-N_("Bradford")
-N_("Bradshaw Field")
-N_("Brainerd")
-N_("Brasilia")
-N_("Brasschaat")
-N_("Bratislava")
-N_("Bratsk")
-N_("Braunschweig")
-N_("Brazil")
-N_("Bremen")
-N_("Bremerton")
-N_("Brest")
-N_("Bridgeport")
-N_("Brindisi")
-N_("Brisbane")
-N_("Bristol")
-N_("British Columbia")
-N_("Brno")
-N_("Broadus")
-N_("Broken Bow")
-N_("Bronnoysund")
-N_("Brookings")
-N_("Brooksville")
-N_("Broome")
-N_("Brownsville")
-N_("Brunswick")
-N_("Brussels-National Airport")
-N_("Bryansk")
-N_("Bryce Canyon")
-N_("Bucaramanga/Palonegro")
-N_("Bucuresti")
-N_("Bucuresti-Otopeni")
-N_("Budapest")
-N_("Buffalo")
-N_("Bulgaria")
-N_("Bullfrog")
-N_("Burbank")
-N_("Burgas")
-N_("Burley")
-N_("Burlington")
-N_("Burnet")
-N_("Burns")
-N_("Bursa")
-N_("Burwell")
-N_("Butte")
-N_("Caen-Carpiquet")
-N_("Cagliari")
-N_("Cairns")
-N_("Cairo")
-N_("Calabozo")
-N_("Calcutta/Dum Dum")
-N_("Caldwell")
-N_("Calgary")
-N_("Cali/Alfonso Bonillaaragon")
-N_("Caliente")
-N_("California")
-N_("Calvi-Ste-Catherine")
-N_("Camaguey")
-N_("Camarillo")
-N_("Cambridge")
-N_("Cameron")
-N_("Camiri")
-N_("Campeche")
-N_("Campinas")
-N_("Campo")
-N_("Campo Grande")
-N_("Camp Stanley/H-207")
-N_("Canaan")
-N_("Canada")
-N_("Canarias/Fuerteventura")
-N_("Canarias/Gran Canaria")
-N_("Canarias/Hierro")
-N_("Canarias/Lanzarote")
-N_("Canarias/La Palma")
-N_("Canarias/Tenerife Norte")
-N_("Canarias/Tenerife Sur")
-N_("Canberra")
-N_("Cancun")
-N_("Cannes-Mandelieu")
-N_("Cantwell")
-N_("Cape Girardeau")
-N_("Cape Hatteras")
-N_("Cape Lisburne")
-N_("Cape Newenham")
-N_("Cape Romanzoff")
-N_("Cape Town D. F. Malan ")
-N_("Capitan Corbeta")
-N_("Capo Mele")
-N_("Caracas La Carlota")
-N_("Caracas Maiquetia")
-N_("Caravelas")
-N_("Carbondale")
-N_("Cardiff")
-N_("Caribou")
-N_("Carlisle")
-N_("Carlsbad")
-N_("Carroll")
-N_("Cartagena/Rafael Nunez")
-N_("Casa Granda")
-N_("Cascade")
-N_("Casper")
-N_("Catacamas")
-N_("Catania")
-N_("Cayman Islands")
-N_("Cayo Largo del Sur")
-N_("Cazaux")
-N_("Cecil NAS")
-N_("Cedar City")
-N_("Cedar Rapids")
-N_("Central and South America")
-N_("Cervia")
-N_("Chacarita")
-N_("Chadron")
-N_("Challis")
-N_("Chamberlain")
-N_("Chambery")
-N_("Champaign")
-N_("Chandalar Lake")
-N_("Chandler")
-N_("Chania")
-N_("Chanute")
-N_("Chariton")
-N_("Charleroi-Brussels South")
-N_("Charles City")
-N_("Charleston")
-N_("Charlotte")
-N_("Charlottesville")
-N_("Chatham")
-N_("Chattanooga")
-N_("Cheboksary")
-N_("Cheju")
-N_("Chelyabinsk")
-N_("Chengdu")
-N_("Cherbourg")
-N_("Cherry Point")
-N_("Chetumal")
-N_("Cheyenne")
-N_("Chiang Kai Shek")
-N_("Chia Tung")
-N_("Chiayi")
-N_("Chicago-DuPage")
-N_("Chicago-Lakefront")
-N_("Chicago-Midway")
-N_("Chicago-O'Hare")
-N_("Chichijima")
-N_("Chiclayo")
-N_("Chico")
-N_("Chicopee Falls")
-N_("Chievres")
-N_("Chihhang")
-N_("Chihuahua")
-N_("Childress")
-N_("Chile")
-N_("China Lake")
-N_("Chinandega")
-N_("Chinmem/Shatou")
-N_("Chino")
-N_("Chippewa County")
-N_("Chita")
-N_("Chitose Ab")
-N_("Chitose ASDF")
-N_("Chofu Airport")
-N_("Choluteca")
-N_("Chongju Ab")
-N_("Christchurch")
-N_("Christmas Island")
-N_("Chulitna")
-N_("Churchill")
-N_("Churchill Falls")
-N_("Cincinnati")
-N_("Circle City")
-N_("Ciudad Bolivar")
-N_("Ciudad del Carmen")
-N_("Ciudad Juarez")
-N_("Ciudad Obregon")
-N_("Ciudad Victoria")
-N_("Clarinda")
-N_("Clarion")
-N_("Clarksburg")
-N_("Clayton")
-N_("Clayton Lake")
-N_("Clermont-Ferrand")
-N_("Cleveland")
-N_("Cleveland/Cuyahoga")
-N_("Cleveland-Lakefront")
-N_("Clinton")
-N_("Clovis-Cannon AFB")
-N_("Cobija")
-N_("Cochabamba")
-N_("Cocoa Beach")
-N_("Cocos Island")
-N_("Cody")
-N_("Coeur d'Alene")
-N_("Cold Bay")
-N_("Colima")
-N_("College Station")
-N_("Colmar-Meyenheim")
-N_("Colombia")
-N_("Colonia")
-N_("Colorado")
-N_("Colorado Springs")
-N_("Columbia")
-N_("Columbia-McEntire")
-N_("Columbus")
-N_("Columbus-Fort Benning")
-N_("Columbus-Gahanna")
-N_("Columbus-OSU")
-N_("Columbus-W Point-Starkville")
-N_("Colville")
-N_("Comodoro Rivadavia")
-N_("Comox")
-N_("Conceicao Do Araguaia")
-N_("Concepcion")
-N_("Concord")
-N_("Concordia")
-N_("Connaught")
-N_("Connecticut")
-N_("Conroe")
-N_("Constantine")
-N_("Copper Harbor")
-N_("Cordoba")
-N_("Cordova")
-N_("Cork")
-N_("Coro")
-N_("Corona")
-N_("Corpus Christi")
-N_("Corpus Christi NAS")
-N_("Corrientes")
-N_("Corsicana")
-N_("Cortez")
-N_("Corumba")
-N_("Costa Rica")
-N_("Cotulla")
-N_("Council Bluffs")
-N_("Coventry")
-N_("Covington")
-N_("Cozumel")
-N_("Craig")
-N_("Cranfield")
-N_("Crescent City")
-N_("Creston")
-N_("Crestview")
-N_("Croatia")
-N_("Cross City")
-N_("Crossville")
-N_("Crotone")
-N_("Cuba")
-N_("Cuba Awrs")
-N_("Cuernavaca")
-N_("Cuiaba")
-N_("Culdrose")
-N_("Culiacan")
-N_("Cumana")
-N_("Cumberland")
-N_("Curitiba")
-N_("Curitiba Apt")
-N_("Custer")
-N_("Cut Bank")
-N_("Cuzco")
-N_("Cyprus")
-N_("Czech Republic")
-N_("Dagali")
-N_("Daggett")
-N_("Dalhart")
-N_("Dalian")
-N_("Dallas-Addison")
-N_("Dallas-Fort Worth")
-N_("Dallas-Love Field")
-N_("Dallas-Redbird")
-N_("Da Nang")
-N_("Danbury")
-N_("Danville")
-N_("Dar-El-Beida")
-N_("Davenport")
-N_("David")
-N_("Dawadmi")
-N_("Dayton")
-N_("Daytona Beach")
-N_("Dayton-Fairborn")
-N_("Dayton-South Airport")
-N_("Dead Horse")
-N_("Deauville-Saint-Gatien")
-N_("Decatur")
-N_("Decimomannu")
-N_("Decorah")
-N_("Deelen")
-N_("Dekalb/Peachtree")
-N_("Delaware")
-N_("Del Bajio")
-N_("Del Rio")
-N_("Delta")
-N_("Deming")
-N_("Den Helder/De Kooy")
-N_("Denison")
-N_("Denmark")
-N_("Denton")
-N_("Denver")
-N_("Denver-Aurora")
-N_("Denver-Broomfield")
-N_("Denver-Cherry Knolls")
-N_("Desert Rock")
-N_("Des Moines")
-N_("Destin")
-N_("Detroit")
-N_("Detroit Lakes")
-N_("Detroit-Taylor")
-N_("Detroit/Ypsilanti")
-N_("Devils Lake")
-N_("Devils Lake (2)")
-N_("Dhahran")
-N_("Dickinson")
-N_("Dijon")
-N_("Dillingham")
-N_("Dillon")
-N_("Dinard")
-N_("District of Columbia")
-N_("Diyarbakir")
-N_("Dnipropetrovsk")
-N_("Dobbiaco")
-N_("Dodge City")
-N_("Doha")
-N_("Dole")
-N_("Dominican Republic")
-N_("Donetsk")
-N_("Dongsha")
-N_("Dongshi")
-N_("Don Torcuato")
-N_("Dortmund-Wickede")
-N_("Dothan")
-N_("Douglas")
-N_("Dover")
-N_("Dresden-Klotzsche")
-N_("Drummond")
-N_("Dubai")
-N_("Dubbo")
-N_("Dublin")
-N_("Du Bois")
-N_("Dubrovnik")
-N_("Dubuque")
-N_("Dugway")
-N_("Duluth")
-N_("Dundee")
-N_("Durango")
-N_("Durango Awrs")
-N_("Durazno")
-N_("Durban Louis Botha ")
-N_("Dusseldorf")
-N_("Dutch Harbor")
-N_("Dyersburg")
-N_("Eagle")
-N_("Eagle Range")
-N_("East London")
-N_("East Midlands")
-N_("East St Louis")
-N_("Eau Claire")
-N_("Ecuador")
-N_("Edinburgh")
-N_("Edmonton")
-N_("Edmonton/Villeneuve")
-N_("Eduardo Gomes International")
-N_("Edwards AFB")
-N_("Egilsstadir")
-N_("Eglin")
-N_("Eglington/Londonderry")
-N_("Egypt")
-N_("Eindhoven")
-N_("Ekofisk")
-N_("Elazig")
-N_("El Centro")
-N_("El Dorado")
-N_("Elefsis")
-N_("Elfin Cove")
-N_("Elizabeth City")
-N_("Elk City")
-N_("Elkhart")
-N_("Elkins")
-N_("Elko")
-N_("Elmira")
-N_("El Monte")
-N_("El Paso")
-N_("El Salvador")
-N_("El Salvador Int.")
-N_("Elsenborn")
-N_("Ely")
-N_("Emmonak")
-N_("Emporia")
-N_("Enid")
-N_("Enid/Woodring")
-N_("Enosburg Falls")
-N_("Ephrata")
-N_("Ercan")
-N_("Erie")
-N_("Erzurum")
-N_("Esbjerg")
-N_("Escanaba")
-N_("Esfahan")
-N_("Eskisehir")
-N_("Estherville")
-N_("Estonia")
-N_("Eugene")
-N_("Eureka")
-N_("Europe")
-N_("Evanston")
-N_("Evansville")
-N_("Everett")
-N_("Evergreen")
-N_("Evreux-Fauville")
-N_("Exeter")
-N_("Ezeiza")
-N_("Fagernes")
-N_("Fairbanks")
-N_("Fairchild")
-N_("Fairfield")
-N_("Fairmont")
-N_("Fallon")
-N_("Falls City")
-N_("Falmouth-Otis AFB")
-N_("Farbanks/Eielson AFB")
-N_("Fargo")
-N_("Farmingdale")
-N_("Farmington")
-N_("Farmville")
-N_("Faro")
-N_("Fayetteville")
-N_("Feng Nin")
-N_("Fergus Falls")
-N_("Fernando De Noronha")
-N_("Ferrara")
-N_("Figari")
-N_("Findlay")
-N_("Finland")
-N_("Firenze")
-N_("Fitchburg")
-N_("Flagstaff")
-N_("Flint")
-N_("Flippin")
-N_("Florence")
-N_("Florennes")
-N_("Flores")
-N_("Florianopolis")
-N_("Florida")
-N_("Floro")
-N_("Fond Du Lac")
-N_("Forde/Bringeland")
-N_("Forli")
-N_("Formosa")
-N_("Fortaleza")
-N_("Fort Belvoir")
-N_("Fort Benning")
-N_("Fort Bragg")
-N_("Fort Campbell")
-N_("Fort Carson")
-N_("Fort Collins")
-N_("Fort Collins/Lovel")
-N_("Fort Dodge")
-N_("Fort Drum")
-N_("Fort Eustis")
-N_("Fort Greely/Allen AAF")
-N_("Fort Huachuca")
-N_("Fort Knox")
-N_("Fort Lauderdale")
-N_("Fort Lauderdale (International)")
-N_("Fort Leonard")
-N_("Fort Lewis")
-N_("Fort Madison")
-N_("Fort Meade")
-N_("Fort Myers (Page Field)")
-N_("Fort Myers (Southwest Florida International)")
-N_("Fort Polk-Leesville")
-N_("Fort Riley")
-N_("Fort Sill")
-N_("Fort Smith")
-N_("Fort Stewart")
-N_("Fort Stockton")
-N_("Fort Wayne")
-N_("Fort Worth-Alliance")
-N_("Fort Worth-Meacham")
-N_("Fort Worth NAS")
-N_("Fourchon")
-N_("Foz Do Iguacu")
-N_("France")
-N_("Frankfort")
-N_("Frankfurt/Main")
-N_("Franklin")
-N_("Fredericton")
-N_("Freeport")
-N_("Frenchville")
-N_("Fresno")
-N_("Fresno-Chandler")
-N_("Friday Harbor")
-N_("Friedrichshafen")
-N_("Frigg")
-N_("Frontone")
-N_("Frosinone")
-N_("Fryeburg")
-N_("Fujairah")
-N_("Fuji Ab")
-N_("Fukue Airport")
-N_("Fukui Airport")
-N_("Fukuoka Airport")
-N_("Fullerton")
-N_("Funchal")
-N_("FYR Macedonia")
-N_("Gadsden")
-N_("Gage")
-N_("Gainesville")
-N_("Galax-Hillsville")
-N_("Galbraith Lake")
-N_("Galeao")
-N_("Galena")
-N_("Galesburg")
-N_("Gallup")
-N_("Galveston")
-N_("Gambell")
-N_("Gander")
-N_("Garden City")
-N_("Gary")
-N_("Gassim")
-N_("Gatineau")
-N_("Gaziantep")
-N_("Gdansk")
-N_("Geneve")
-N_("Genova")
-N_("George Airport")
-N_("Georgetown")
-N_("Georgia")
-N_("Germany")
-N_("Ghardaia")
-N_("Ghedi")
-N_("Gibraltar")
-N_("Gifu Ab")
-N_("Gila Bend")
-N_("Gillette")
-N_("Gilze-Rijen")
-N_("Gioia del Colle")
-N_("Girona")
-N_("Gizan")
-N_("Glasgow")
-N_("Glendive")
-N_("Glens Falls")
-N_("Goiania")
-N_("Goldsboro")
-N_("Goodland")
-N_("Goose Bay")
-N_("Goteborg (Landvetter)")
-N_("Goteborg (Save)")
-N_("Granada")
-N_("Grand Canyon")
-N_("Grand Cayman")
-N_("Grand Forks")
-N_("Grand Island")
-N_("Grand Isle")
-N_("Grand Junction")
-N_("Grand Marais")
-N_("Grand Rapids")
-N_("Grandview")
-N_("Grangeville")
-N_("Grants")
-N_("Graz")
-N_("Great Falls")
-N_("Greece")
-N_("Greeley")
-N_("Green Bay")
-N_("Green River")
-N_("Greensboro")
-N_("Greenville")
-N_("Greenville-Spartanburg")
-N_("Greenwood")
-N_("Grenoble-Saint-Geoirs")
-N_("Griffiss AFB")
-N_("Groningen")
-N_("Grosseto")
-N_("Groton")
-N_("Guadalajara")
-N_("Guadalupe Pass")
-N_("Guanare")
-N_("Guangzhou")
-N_("Guantanamo")
-N_("Guarany")
-N_("Guaratingueta")
-N_("Guarulhos")
-N_("Guatemala")
-N_("Guayaquil/Simon Bolivar")
-N_("Guaymas")
-N_("Guernsey")
-N_("Guidonia")
-N_("Gulfport")
-N_("Gulkana")
-N_("Gullfax C")
-N_("Gunnison")
-N_("Gunnison (2)")
-N_("Guriat")
-N_("Gustavus")
-N_("Guymon")
-N_("Habana")
-N_("Hachijojima Airport")
-N_("Hachinohe Ab")
-N_("Hafr Al-Batin")
-N_("Hagerstown")
-N_("Hail")
-N_("Hailey-Sun Valley")
-N_("Haines")
-N_("Haiti")
-N_("Hakodate Airport")
-N_("Halifax")
-N_("Hamamatsu Ab")
-N_("Hamburg")
-N_("Hamburg-Finkenwerder")
-N_("Hamilton")
-N_("Hammerfest")
-N_("Hampton")
-N_("Hanamaki Airport")
-N_("Hancock")
-N_("Hangzhou")
-N_("Hanksville")
-N_("Hannover")
-N_("Ha Noi")
-N_("Harbor Beach")
-N_("Harlingen")
-N_("Harlowton")
-N_("Harrisburg")
-N_("Harrison")
-N_("Harstad/Narvik/Evenes")
-N_("Hartford")
-N_("Hassi-Messaoud")
-N_("Hastings")
-N_("Haugesund")
-N_("Havre")
-N_("Hawaii")
-N_("Hawthorne")
-N_("Hayden")
-N_("Hayes River")
-N_("Hays")
-N_("Hayward")
-N_("Healy River")
-N_("Helena")
-N_("Helsinki")
-N_("Henderson")
-N_("Hengchun")
-N_("Hermosillo")
-N_("Hibbing")
-N_("Hickory")
-N_("Hill City")
-N_("Hillsboro")
-N_("Hilo")
-N_("Hinesville")
-N_("Hiroshima Airport")
-N_("Hobart")
-N_("Hobbs")
-N_("Ho Chi Minh")
-N_("Hodeidah")
-N_("Hof")
-N_("Hoffman")
-N_("Hofu Ab")
-N_("Hohenems")
-N_("Holguin")
-N_("Homer")
-N_("Homestead AFB")
-N_("Hondo")
-N_("Honduras")
-N_("Hong Kong")
-N_("Honningsvag")
-N_("Honolulu")
-N_("Hoonah")
-N_("Hoquiam")
-N_("Hot Springs")
-N_("Houghton Lake")
-N_("Houlton")
-N_("Houma")
-N_("Houston-Bush")
-N_("Houston-Clover")
-N_("Houston-Ellington Field")
-N_("Houston-Hobby")
-N_("Houston-Hooks")
-N_("Howard AFB")
-N_("Hsinchu")
-N_("Huanuco")
-N_("Huehuetenango")
-N_("Hulien")
-N_("Humberside")
-N_("Hungary")
-N_("Huntington")
-N_("Huntsville")
-N_("Hurlburt")
-N_("Huron")
-N_("Hutchinson")
-N_("Hyakuri Ab")
-N_("Hyannis")
-N_("Hyderabad")
-N_("Hyeres-Le Palyvestre")
-N_("Iasi")
-N_("Ibiza")
-N_("Iceland")
-N_("Ichikawa")
-N_("Idaho")
-N_("Idaho Falls")
-N_("Iguazu")
-N_("Iki Airport")
-N_("Ilan")
-N_("Iliamna")
-N_("Illinois")
-N_("Imperial")
-N_("Imperial (2)")
-N_("Imperial Beach")
-N_("In Amenas")
-N_("India")
-N_("Indiana")
-N_("Indianapolis")
-N_("Indian Springs")
-N_("Innsbruck")
-N_("International Falls")
-N_("Intracoastal")
-N_("Inverness")
-N_("Inyokern")
-N_("Iowa")
-N_("Iowa City")
-N_("Iqaluit")
-N_("Iquique/Diego Arac")
-N_("Iquitos")
-N_("Iraklion")
-N_("Iran, Islamic Republic of")
-N_("Ireland")
-N_("Iron Mountain")
-N_("Ironwood")
-N_("Iruma Ab")
-N_("Islamabad")
-N_("Isle of Man")
-N_("Islip")
-N_("Istanbul")
-N_("Itaituba")
-N_("Italy")
-N_("Ithaca")
-N_("Ivano-Frankivsk")
-N_("Iwakuni MCAS")
-N_("Iwojima")
-N_("Ixtapa")
-N_("Izmir/Adnan Menderes")
-N_("Izmir/Cigli")
-N_("Izmit")
-N_("Izumo Airport")
-N_("Jackson")
-N_("Jacksonville")
-N_("Jacksonville-Craig Airport")
-N_("Jacksonville NAS")
-N_("Jaffrey")
-N_("Jamaica")
-N_("Jamestown")
-N_("Janesville")
-N_("Jan Smuts")
-N_("Japan")
-N_("Jeddah King Abdul Aziz International Airport")
-N_("Jefferson City")
-N_("Jerez")
-N_("Jersey")
-N_("Jinotega")
-N_("Johan A. Pengel")
-N_("Johnstown")
-N_("Jonesboro")
-N_("Jonkoping")
-N_("Joplin")
-N_("Jordan")
-N_("Juanjui")
-N_("Juan Santamaria")
-N_("Juigalpa")
-N_("Jujuy")
-N_("Juliaca")
-N_("Junction")
-N_("Juneau")
-N_("Kadena Ab")
-N_("Kagoshima Airport")
-N_("Kahului")
-N_("Kailua-Kona")
-N_("Kake")
-N_("Kalamata")
-N_("Kalamazoo")
-N_("Kalispell")
-N_("Kamigoto")
-N_("Kaneohe")
-N_("Kangshan")
-N_("Kanoya Ab")
-N_("Kansai International Airport")
-N_("Kansas")
-N_("Kansas City")
-N_("Kansas City-Gladstone")
-N_("Kaohsiung")
-N_("Karachi")
-N_("Karup")
-N_("Kassel-Calden")
-N_("Kasumigaura Ab")
-N_("Kasuminome Ab")
-N_("Katowice")
-N_("Kavala")
-N_("Kayseri")
-N_("Kazan")
-N_("Kearney")
-N_("Keene")
-N_("Kefallinia")
-N_("Keflavik")
-N_("Kenai")
-N_("Kenosha")
-N_("Kentucky")
-N_("Keokuk")
-N_("Kerkira")
-N_("Kerman")
-N_("Ketchikan")
-N_("Key West")
-N_("Key West NAS")
-N_("Khabarovsk")
-N_("Khamis Mushait")
-N_("Kharkiv")
-N_("Kikai Island")
-N_("Killeen")
-N_("Killeen-Ft Hood")
-N_("Killeen-Gray AAF")
-N_("King Khaled International Airport")
-N_("Kingman")
-N_("King Salmon")
-N_("Kingston")
-N_("Kingsville")
-N_("Kinloss")
-N_("Kinston")
-N_("Kirkenes")
-N_("Kirksville")
-N_("Kiruna")
-N_("Kisarazu Ab")
-N_("Kishineu")
-N_("Kitakyushu Airport")
-N_("Klagenfurt")
-N_("Klamath Falls")
-N_("Klawock")
-N_("Kleine Brogel")
-N_("Kliningrad")
-N_("Knoxville")
-N_("Knoxville-Downtown")
-N_("Kobenhavn/Kastrup")
-N_("Kobenhavn/Roskilde")
-N_("Kochi Airport")
-N_("Kodiak")
-N_("Kogalniceanu")
-N_("Kogalym")
-N_("Koksijde")
-N_("Kolding/Vandrup")
-N_("Koln/Bonn")
-N_("Komatsu Ab")
-N_("Komatsujima Ab")
-N_("Konya")
-N_("Korea, Democratic People's Republic of")
-N_("Korea, Republic of")
-N_("Kos")
-N_("Kotzebue")
-N_("Kozani")
-N_("Krakow")
-N_("Krasnodar")
-N_("Krasnoyarsk")
-N_("Kristiansand/Kjevik")
-N_("Kristiansund/Kvernberget")
-N_("Kryviy Rig/Lozovatka")
-N_("Kumamoto Airport")
-N_("Kunming")
-N_("Kushiro Airport")
-N_("Kuwait")
-N_("Kyyiv/Boryspil")
-N_("Kyyiv/Zhulyany")
-N_("La Ceiba")
-N_("Laconia")
-N_("La Coruna")
-N_("La Crosse")
-N_("La Esperanza")
-N_("Lafayette")
-N_("La Grande")
-N_("Lahaina")
-N_("Lahore")
-N_("Lajes")
-N_("La Junta")
-N_("Lake Charles")
-N_("Lake Hood")
-N_("Lakehurst")
-N_("Lakeland")
-N_("Lake Tahoe")
-N_("Lakeview")
-N_("Lamar")
-N_("La Mesa")
-N_("Lamezia")
-N_("Lamoni")
-N_("Lampedusa")
-N_("Lanai")
-N_("Lancaster")
-N_("Lander")
-N_("Langebaanweg")
-N_("Langley AFB")
-N_("Lannion")
-N_("Lansing")
-N_("Lanzhou")
-N_("La Paz")
-N_("La Paz/Alto")
-N_("Laramie")
-N_("Laredo")
-N_("Larnaka")
-N_("La Romana")
-N_("Las Americas")
-N_("Las Tunas")
-N_("Las Vegas")
-N_("Latina")
-N_("Latrobe")
-N_("Latvia")
-N_("Laughlin")
-N_("Laurel")
-N_("La Verne")
-N_("Lawrence")
-N_("Lawton")
-N_("Leadville")
-N_("Learmouth")
-N_("Lebanon")
-N_("Lecce")
-N_("Leeds and Bradford")
-N_("Leesburg")
-N_("Leeuwarden")
-N_("Le Havre-Octeville")
-N_("Leipzig-Schkeuditz")
-N_("Leknes")
-N_("Le Mans")
-N_("Le Marine")
-N_("Lemmon")
-N_("Lemoore")
-N_("Leticia/Vasquez Cobo")
-N_("Le Touquet")
-N_("Leuchars")
-N_("Lewisburg")
-N_("Lewiston")
-N_("Lewistown")
-N_("Lexington")
-N_("Liberal")
-N_("Liberia")
-N_("Libya")
-N_("Lichtenburg")
-N_("Lidgerwood")
-N_("Liege")
-N_("Lihue")
-N_("Lille-Lesquin")
-N_("Lima-Callao")
-N_("Limnos")
-N_("Limoges")
-N_("Limon")
-N_("Lincoln")
-N_("Linz")
-N_("Lisboa")
-N_("Lista")
-N_("Litchfield")
-N_("Lithuania")
-N_("Little Rock")
-N_("Little Rock AFB")
-N_("Livermore")
-N_("Liverpool")
-N_("Livingston")
-N_("Ljubljana")
-N_("Logan")
-N_("Lolland Falster")
-N_("Lompoc")
-N_("London")
-N_("London/City")
-N_("London/Gatwick")
-N_("London/Heathrow")
-N_("London/Stansted")
-N_("Londrina")
-N_("Lone Rock")
-N_("Long Beach")
-N_("Longview")
-N_("Lorient-Lann-Bihoue")
-N_("Los Alamos")
-N_("Los Angeles")
-N_("Los Mochis")
-N_("Lossiemouth")
-N_("Louisville")
-N_("Louisville-Standiford Field")
-N_("Lousiana")
-N_("Lovelock")
-N_("Lubbock")
-N_("Lubeck-Blankensee")
-N_("Lufkin")
-N_("Lugano")
-N_("Luqa")
-N_("Luton")
-N_("Luxembourg")
-N_("Luxeuil")
-N_("Luxor")
-N_("Lviv")
-N_("Lynchburg")
-N_("Lyneham")
-N_("Lyon-Bron")
-N_("Lyon-Satolas")
-N_("Maastricht")
-N_("Macae")
-N_("Macapa")
-N_("Maceio")
-N_("Macon")
-N_("Madinah")
-N_("Madison")
-N_("Madras/Minambakkam")
-N_("Madrid (Barajas)")
-N_("Madrid (Cuatro Vientos)")
-N_("Magadan")
-N_("Magdalena")
-N_("Maine")
-N_("Makhachkala")
-N_("Makkah")
-N_("Makung")
-N_("Malad City")
-N_("Malaga")
-N_("Malatya")
-N_("Maldonado/Punta Est")
-N_("Malmo/Sturup")
-N_("Malta")
-N_("Mammoth Lakes")
-N_("Managua")
-N_("Manassas")
-N_("Manaus")
-N_("Manchester")
-N_("Mangilsan Ab")
-N_("Manhattan")
-N_("Manisa")
-N_("Manistee")
-N_("Manitoba")
-N_("Manitowoc")
-N_("Mankato")
-N_("Mansfield")
-N_("Manta")
-N_("Manzanillo")
-N_("Maraba")
-N_("Maracaibo-La Chinita")
-N_("Maracay-B.A.Sucre")
-N_("Marathon")
-N_("Mar Del Plata")
-N_("Margarita")
-N_("Marianna")
-N_("Marib")
-N_("Maribor")
-N_("Marietta")
-N_("Marino di Ravenna")
-N_("Marion")
-N_("Marion-Wytheville")
-N_("Marquette")
-N_("Marseille-Provence")
-N_("Marseilles")
-N_("Marshall")
-N_("Marshalltown")
-N_("Marshfield")
-N_("Marte")
-N_("Marthas Vineyard")
-N_("Martinsburg")
-N_("Martinsville")
-N_("Maryland")
-N_("Marysville")
-N_("Marysville-Beale AFB")
-N_("Mashhad")
-N_("Masirah")
-N_("Mason City")
-N_("Massachusetts")
-N_("Massena")
-N_("Matamoros")
-N_("Matsumoto Airport")
-N_("Matsushima Ab")
-N_("Matsuyama Airport")
-N_("Mattoon")
-N_("Mayaguez")
-N_("Mayport")
-N_("Mazatlan")
-N_("Mazu")
-N_("McAlester")
-N_("McAllen")
-N_("McCall")
-N_("McCarthy")
-N_("McClellan")
-N_("McComb")
-N_("McCook")
-N_("McGrath")
-N_("Mc Gregor")
-N_("Meacham")
-N_("Medford")
-N_("Medicine Lodge")
-N_("Mehamn")
-N_("Mekoryuk")
-N_("Melbourne")
-N_("Melfa")
-N_("Melilla")
-N_("Memambetsu Airport")
-N_("Memphis")
-N_("Memphis-NAS")
-N_("Mendoza")
-N_("Mene Grande")
-N_("Menominee")
-N_("Menorca")
-N_("Merced")
-N_("Merida")
-N_("Meridian")
-N_("Meridian-Lauderdale")
-N_("Merril Field")
-N_("Mersa Matruh")
-N_("Mesa-Falcon Field")
-N_("Metabaru Ab")
-N_("Metz-Frescaty")
-N_("Mexicali")
-N_("Mexico")
-N_("Miami")
-N_("Miami-Kendall")
-N_("Miami-Opa Locka")
-N_("Michigan")
-N_("Middle East")
-N_("Middleton Island")
-N_("Middletown")
-N_("Midland")
-N_("Miho Ab")
-N_("Milano/Linate")
-N_("Milano/Malpensa")
-N_("Miles City")
-N_("Milford")
-N_("Millinocket")
-N_("Millville")
-N_("Milton")
-N_("Milwaukee")
-N_("Milwaukee-Timmerman")
-N_("Minamitorishima")
-N_("Minatitlan")
-N_("Minchumina")
-N_("Mineralnye Vody")
-N_("Mineral Wells")
-N_("Minneapolis")
-N_("Minneapolis [2]")
-N_("Minneapolis [3]")
-N_("Minnesota")
-N_("Minocqua")
-N_("Minot")
-N_("Minot AFB")
-N_("Misawa Ab")
-N_("Mississippi")
-N_("Missoula")
-N_("Missouri")
-N_("Mitchell")
-N_("Mitilini")
-N_("Miyakejima Airport")
-N_("Miyazaki Airport")
-N_("Moa")
-N_("Mobile Downtown")
-N_("Mobile Regional Airport")
-N_("Mobridge")
-N_("Modesto")
-N_("Mo I Rana")
-N_("Mojave")
-N_("Molde")
-N_("Moldova")
-N_("Moline-Quad Cities")
-N_("Molokai")
-N_("Mombetsu Airport")
-N_("Monchengladbach")
-N_("Monclova")
-N_("Moncton")
-N_("Monida")
-N_("Monpellier-Mediterrannee")
-N_("Monroe")
-N_("Montague")
-N_("Montana")
-N_("Mont-de-Marsan")
-N_("Monte Argentario")
-N_("Monte Bisbino")
-N_("Monte Calamita")
-N_("Monte Cimone")
-N_("Montego Bay")
-N_("Monte Malanotte")
-N_("Monterey")
-N_("Monterrey")
-N_("Monte Scuro")
-N_("Monte Terminillo")
-N_("Montevideo/Carrasco")
-N_("Montgomery")
-N_("Montgomery-Maxwell AFB")
-N_("Monticello")
-N_("Montpelier")
-N_("Montreal Dorval")
-N_("Montreal Mirabel")
-N_("Montreal Saint-Hubert")
-N_("Montrose")
-N_("Montrose (2)")
-N_("Morelia")
-N_("Morgantown")
-N_("Moriarty")
-N_("Morocco")
-N_("Morristown")
-N_("Moscow Domodedovo")
-N_("Moscow Sheremetyevo")
-N_("Moses Lake")
-N_("Mosinee")
-N_("Mosjoen")
-N_("Moultrie")
-N_("Mountain Home")
-N_("Mountain View")
-N_("Mount Clemens")
-N_("Mount Holly")
-N_("Mount Shasta")
-N_("Mount Vernon")
-N_("Mount Wilson")
-N_("Mt Washington")
-N_("Mugla/Dalaman")
-N_("Muir")
-N_("Mullan")
-N_("Mullen")
-N_("Munchen")
-N_("Muncie")
-N_("Munster/Osnabruck")
-N_("Murcia")
-N_("Murmansk")
-N_("Mus")
-N_("Muscatine")
-N_("Muscle Shoals")
-N_("Muskegon")
-N_("Mykonos")
-N_("Myrtle Beach")
-N_("Nabesna/Devil Mt.")
-N_("Nacogdoches")
-N_("Nagasaki Airport")
-N_("Nagoya Airport")
-N_("Nagpur Sonegaon")
-N_("Naha Airport")
-N_("Najran")
-N_("Nakashibetsu Airport")
-N_("Nalchik")
-N_("Namsos")
-N_("Nancy-Essey")
-N_("Nancy-Ochey")
-N_("Nankishirahama Airport")
-N_("Nanning")
-N_("Nantes Adlantique")
-N_("Nantucket")
-N_("Napa")
-N_("Naples")
-N_("Napoli")
-N_("Narvik")
-N_("Nasa Shuttle")
-N_("Nashua")
-N_("Nashville")
-N_("Nassau")
-N_("Natal")
-N_("Natchez")
-N_("Nawabshah")
-N_("Nebraska")
-N_("Needles")
-N_("Nenana")
-N_("Netherlands")
-N_("Neuquen")
-N_("Nevada")
-N_("Newark")
-N_("New Bedford")
-N_("New Bern")
-N_("New Braunfels")
-N_("New Brunswick")
-N_("Newburgh")
-N_("Newcastle")
-N_("New Delhi/Palam")
-N_("Newfoundland")
-N_("New Hampshire")
-N_("New Haven")
-N_("New Iberia")
-N_("New Jersey")
-N_("New Mexico")
-N_("New Orleans")
-N_("New Orleans-Lakefront")
-N_("New Orleans NAS")
-N_("Newport")
-N_("Newport News")
-N_("New Port Richey")
-N_("New River")
-N_("New Tokyo International Airport")
-N_("Newton")
-N_("New York")
-N_("New York-JFK Arpt")
-N_("New York-La Guardia")
-N_("New Zealand")
-N_("Niagara Falls")
-N_("Nicaragua")
-N_("Nice-Cote d'Azur")
-N_("Niigata Airport")
-N_("Nimes-Garons")
-N_("Nipawin")
-N_("Nis")
-N_("Nizhny Novgorod")
-N_("N Las Vegas")
-N_("N Myrtle Beach")
-N_("Nogales")
-N_("Nome")
-N_("Norfolk")
-N_("Norfolk Island")
-N_("Norfolk NAS")
-N_("Norrkoping")
-N_("North Adams")
-N_("North Bend")
-N_("North Carolina")
-N_("North Conway")
-N_("North Dakota")
-N_("Northeast Philadelphia")
-N_("North Kingstown")
-N_("North Platte")
-N_("Northway")
-N_("Northwest Territories")
-N_("Norway")
-N_("Norwich")
-N_("Norwood")
-N_("Notodden")
-N_("Novara/Cameri")
-N_("Nova Scotia")
-N_("Novosibirsk")
-N_("Nueva Gerona")
-N_("Nueva Ocotepeque")
-N_("Nuevo Laredo")
-N_("Nurnberg")
-N_("Nyutabaru Ab")
-N_("Oahu")
-N_("Oak Harbor")
-N_("Oakland")
-N_("Oaxaca")
-N_("Oberpfaffenhofen")
-N_("Obihiro Airport")
-N_("Ocala")
-N_("Oceanside")
-N_("Odense")
-N_("Odesa")
-N_("Oelwen")
-N_("Ogden")
-N_("Ogden-Hill AFB")
-N_("Ogdensburg")
-N_("Ohio")
-N_("Ohrid")
-N_("Oita Airport")
-N_("Ojika Island")
-N_("Okayama Airport")
-N_("Oki Airport")
-N_("Okinoerabu")
-N_("Oklahoma")
-N_("Oklahoma City")
-N_("Oklahoma City-Bethany")
-N_("Oklahoma City-Midwest City")
-N_("Okushiri Island")
-N_("Olathe")
-N_("Olathe/Ind.")
-N_("Olbia")
-N_("Olympia")
-N_("Omaha")
-N_("Omaha-Bellevue")
-N_("Omak")
-N_("Oman")
-N_("Ominato Ab")
-N_("Omsk")
-N_("O'Neill")
-N_("Ontario")
-N_("Oostende")
-N_("Oran")
-N_("Oran/Es Senia")
-N_("Orange")
-N_("Orange City")
-N_("Ord-Sharp")
-N_("Oregon")
-N_("Orenburg")
-N_("Orland")
-N_("Orlando")
-N_("Orlando (Orlando International)")
-N_("Orsta-Volda")
-N_("Oruro")
-N_("Osaka International Airport")
-N_("Osan Ab")
-N_("Oscoda")
-N_("Oseberg A")
-N_("Oshima Airport")
-N_("Oshkosh")
-N_("Oslo/Gardenmoen")
-N_("Ostrava")
-N_("Ottawa")
-N_("Ottumwa")
-N_("Owensboro")
-N_("Owyhee")
-N_("Oxford")
-N_("Oxnard")
-N_("Ozark")
-N_("Ozuki Ab")
-N_("Paderborn-Haxterberg")
-N_("Padova")
-N_("Paducah")
-N_("Paekado")
-N_("Paengnyongdo Ab")
-N_("Paganella")
-N_("Page")
-N_("Pakistan")
-N_("Pa Kuei/Bakuai")
-N_("Palacios")
-N_("Palermo")
-N_("Palma de Mallorca")
-N_("Palmdale")
-N_("Palmer")
-N_("Palm Springs")
-N_("Palo Alto")
-N_("Pamplona")
-N_("Panama")
-N_("Panama City")
-N_("Pantelleria")
-N_("Papa")
-N_("Paphos")
-N_("Paraguay")
-N_("Paris")
-N_("Paris/Charles De Gaulle")
-N_("Paris/Le Bourget")
-N_("Paris/Orly")
-N_("Parkersburg")
-N_("Pasco")
-N_("Paso De Los Libres")
-N_("Paso Robles")
-N_("Passo dei Giovi")
-N_("Passo della Cisa")
-N_("Passo Resia")
-N_("Passo Rolle")
-N_("Patna")
-N_("Patterson")
-N_("Patuxent River")
-N_("Pau/Pyrenees")
-N_("Paxson")
-N_("Paysandu")
-N_("Payson")
-N_("Pellston")
-N_("Pelotas")
-N_("Pendleton")
-N_("Pennsylvania")
-N_("Penn Yan")
-N_("Pensacola")
-N_("Pensacola NAS")
-N_("People's Republic of China")
-N_("Peoria")
-N_("Pequot Lakes")
-N_("Pereira/Matecana")
-N_("Perm")
-N_("Perpignan-Rivesaltes")
-N_("Perry-Foley")
-N_("Perth")
-N_("Peru")
-N_("Perugia")
-N_("Pescara")
-N_("Petersburg")
-N_("Petropavlovsk-Kamchatsky")
-N_("Petrozavodsk")
-N_("Philadelphia")
-N_("Philip")
-N_("Philipsburg")
-N_("Phillips")
-N_("Phoenix")
-N_("Phoenix-Deer Valley")
-N_("Phoenix-Goodyear")
-N_("Phoenix-Luke AFB")
-N_("Piacenza")
-N_("Pian Rosa")
-N_("Piedras Negras")
-N_("Pierre")
-N_("Pietersburg")
-N_("Pikeville")
-N_("Pine Bluff")
-N_("Pingtung North")
-N_("Pingtung South")
-N_("Pirassununga")
-N_("Pisa")
-N_("Pisco")
-N_("Pittsburgh")
-N_("Pittsburgh-West Mifflin")
-N_("Plattsburg")
-N_("Plovdiv")
-N_("Plymouth")
-N_("Pocatello")
-N_("Pocos De Caldas")
-N_("Podgorica")
-N_("Podgorica Titograd")
-N_("Pohang Ab")
-N_("Point Hope")
-N_("Point Lay")
-N_("Point Mugu")
-N_("Point Piedras Blanca")
-N_("Poitiers")
-N_("Poland")
-N_("Pompano Beach")
-N_("Ponca City")
-N_("Ponce")
-N_("Ponta Pora")
-N_("Pontiac")
-N_("Pope AFB")
-N_("Poplar Bluff")
-N_("Poprad")
-N_("Port Alexander")
-N_("Port Alsworth")
-N_("Port Angeles")
-N_("Port-Au-Prince")
-N_("Port Elizabeth")
-N_("Porterville")
-N_("Port Hardy")
-N_("Port Hedland")
-N_("Port Heiden")
-N_("Portland")
-N_("Porto")
-N_("Porto Alegre")
-N_("Porto Alegre Apt")
-N_("Portoroz")
-N_("Porto Santo")
-N_("Porto Velho")
-N_("Port Said")
-N_("Portsmouth")
-N_("Portugal")
-N_("Posadas")
-N_("Potosi")
-N_("Poughkeepsie")
-N_("Pownal")
-N_("Poza Rica")
-N_("Poznan")
-N_("Praha")
-N_("Pratica di Mare")
-N_("Prescott")
-N_("Presidente Prudente")
-N_("Presque Isle")
-N_("Prestwick")
-N_("Pretoria")
-N_("Preveza")
-N_("Price-Carbon")
-N_("Pristina")
-N_("Providence")
-N_("Provincetown")
-N_("Provo")
-N_("Pskov")
-N_("Pucallpa")
-N_("Pudahuel")
-N_("Puebla")
-N_("Pueblo")
-N_("Puerto Barrios")
-N_("Puerto Cabezas")
-N_("Puerto Escondido")
-N_("Puerto Lempira")
-N_("Puerto Limon")
-N_("Puerto Maldonado")
-N_("Puerto Montt")
-N_("Puerto Plata")
-N_("Puerto Rico")
-N_("Puerto Suarez")
-N_("Puerto Vallarta")
-N_("Pula")
-N_("Pullman")
-N_("Punta Arenas")
-N_("Punta Cana")
-N_("Punta Gorda")
-N_("Puntilla Lake")
-N_("Pusan/Kimhae")
-N_("Pyongtaek Ab")
-N_("Pyongyang")
-N_("Qatar")
-N_("Quantico")
-N_("Quebec")
-N_("Quebec City")
-N_("Queretaro")
-N_("Quillayute")
-N_("Quimper")
-N_("Quincy")
-N_("Quito/Mariscal Sucre")
-N_("Rabat")
-N_("Raduzhny")
-N_("Rafha")
-N_("Raleigh-Durham")
-N_("Randolph AFB")
-N_("Rapid City")
-N_("Rapid City-Ellsworth AFB")
-N_("Ras Al Khaimah")
-N_("Rawlins")
-N_("Reading")
-N_("Rebun Island")
-N_("Recife")
-N_("Red Bluff")
-N_("Redding")
-N_("Redig")
-N_("Redmond")
-N_("Red Oak")
-N_("Redwood Falls")
-N_("Reggio Calabria")
-N_("Regina")
-N_("Reims-Champagne")
-N_("Rennes")
-N_("Reno")
-N_("Renton")
-N_("Resistencia")
-N_("Reus")
-N_("Reyes")
-N_("Reykjavik")
-N_("Reynosa")
-N_("Rhinelander")
-N_("Rhode Island")
-N_("Riberalta")
-N_("Richmond")
-N_("Rickenbacker")
-N_("Rieti")
-N_("Rifle")
-N_("Riga")
-N_("Rijeka")
-N_("Rimini")
-N_("Rio De Janeiro")
-N_("Rio Gallegos")
-N_("Rio Grande")
-N_("Rioja")
-N_("Rio / Jacarepagua")
-N_("Rionegro/J.M.Cordova")
-N_("Rishiri Island")
-N_("Rivas")
-N_("Rivera")
-N_("Riverside")
-N_("Riverside/March AFB")
-N_("Riverton")
-N_("Rivne")
-N_("Rivolto")
-N_("Riyadh")
-N_("Roanoke")
-N_("Roatan")
-N_("Robore")
-N_("Rochester")
-N_("Rockford")
-N_("Rockland")
-N_("Rockport")
-N_("Rock Springs")
-N_("Rocky Mount")
-N_("Rodos")
-N_("Rogers")
-N_("Roma/Ciampino")
-N_("Roma/Fiumicino")
-N_("Romania")
-N_("Roma/Urbe")
-N_("Rome-Russell")
-N_("Ronchi de' Legionari")
-N_("Ronneby")
-N_("Roosevelt")
-N_("Roros")
-N_("Rorvik/Ryum")
-N_("Rosario")
-N_("Roseburg")
-N_("Roseglen")
-N_("Rost")
-N_("Rostov-Na-Donu")
-N_("Roswell")
-N_("Rotterdam")
-N_("Rouen-Valle de Seine")
-N_("Ruidoso-Sierra Blanca")
-N_("Rurrenabaque")
-N_("Russell")
-N_("Russia")
-N_("Rutland")
-N_("Rygge")
-N_("Rzeszow")
-N_("Saarbrucken")
-N_("Sabine Pass")
-N_("Sacramento")
-N_("Sacramento-Woodland")
-N_("Safford-Municipal Airport")
-N_("Saginaw")
-N_("Saint Anthony")
-N_("Saint-Brieuc-Armor")
-N_("Saint-Dizier-Robinson")
-N_("Saint-Etienne-Boutheon")
-N_("Saint Mary's")
-N_("Saint Mawgan")
-N_("Saint-Nazaire-Montoir")
-N_("Saint Paul")
-N_("Saiq")
-N_("Salalah")
-N_("Salem")
-N_("Salida")
-N_("Salida-Harriet")
-N_("Salina")
-N_("Salinas")
-N_("Salisbury")
-N_("Salmon")
-N_("Salmon (2)")
-N_("Salta")
-N_("Saltillo")
-N_("Salt Lake City")
-N_("Salto")
-N_("Salt point")
-N_("Salvador")
-N_("Salzburg")
-N_("Samara")
-N_("Samos")
-N_("Samsun")
-N_("Sana'A")
-N_("San Andres Isla/Sesquicentenario")
-N_("San Angelo")
-N_("San Antonio")
-N_("San Antonio Del Tachira")
-N_("San Antonio-Kelly AFB")
-N_("San Antonio-Stinson")
-N_("San Carlos")
-N_("Sandane")
-N_("Sandberg")
-N_("Sanderson")
-N_("San Diego")
-N_("San Diego-Brown")
-N_("San Diego-Miramar")
-N_("San Diego-Montgomery")
-N_("San Diego-North Island")
-N_("San Diego-Santee")
-N_("Sandnessjoen/Stokka")
-N_("Sand Point")
-N_("San Fernando De Apure")
-N_("Sanford")
-N_("San Francisco")
-N_("Sangju")
-N_("San Ignacio De Velasco")
-N_("San Joaquin")
-N_("San Jose")
-N_("San Jose De Chiquitos")
-N_("San Jose del Cabo")
-N_("San Jose-Santa Clara")
-N_("San Juan")
-N_("Sankt-Peterburg")
-N_("Sanliurfa")
-N_("San Luis Obispo")
-N_("San Luis Potosi")
-N_("San Miguel")
-N_("San Nicholas Island")
-N_("San Salvador")
-N_("San Sebastian")
-N_("Santa Ana")
-N_("Santa Barbara")
-N_("Santa Cruz")
-N_("Santa Fe")
-N_("Santa Maria")
-N_("Santa Marta/Simon Bolivar")
-N_("Santa Monica")
-N_("Santander")
-N_("Santarem")
-N_("Santa Rosa")
-N_("Santa Rosa de Copan")
-N_("Santiago")
-N_("Santiago de Cuba")
-N_("Santiago Del Estero")
-N_("Santorini")
-N_("Santos")
-N_("Sao Jose Dos Campo")
-N_("Sao Luiz")
-N_("Sao Paulo")
-N_("Sapporo Ab")
-N_("Sarajevo")
-N_("Saranac Lake")
-N_("Sarasota")
-N_("Saratov")
-N_("Sarzana")
-N_("Saskatchewan")
-N_("Saskatoon")
-N_("Sauce Viejo")
-N_("Saudi Arabia")
-N_("Sault Ste Marie")
-N_("Savannah")
-N_("Savannah-Hunter AAF")
-N_("Sawyer AFB")
-N_("Sayun")
-N_("Scatsta")
-N_("Schaffen")
-N_("Schenectady")
-N_("Scilly Isles")
-N_("Scottsbluff")
-N_("Scottsdale")
-N_("Scranton")
-N_("Seattle")
-N_("Seattle-Boeing")
-N_("Sedalia")
-N_("Seeb")
-N_("Selanik")
-N_("Sendai Airport")
-N_("Seoul E Ab")
-N_("Seoul/Kimp'O International Airport")
-N_("Seoul/Yongdungp'O Rokaf Wc")
-N_("Sept-Iles")
-N_("Seul Choix Pt")
-N_("Sevilla")
-N_("Seward")
-N_("Sexton Summit")
-N_("Shanghai")
-N_("Shannon")
-N_("Sharjah")
-N_("Sharm El Sheikhintl")
-N_("Sharurah")
-N_("Shawbury")
-N_("Shearwater")
-N_("Sheboygan")
-N_("Sheldon")
-N_("Shelter Cove")
-N_("Shelton")
-N_("Shenandoah")
-N_("Sheridan")
-N_("Sherman-Denison")
-N_("Shimofusa Ab")
-N_("Shingle Point")
-N_("Shiraz")
-N_("Shishmaref")
-N_("Shizuhama Ab")
-N_("Shoreham")
-N_("Show Low")
-N_("Shreveport Downtown")
-N_("Shreveport Regional")
-N_("Sidney")
-N_("Sigonella")
-N_("Siloam Springs")
-N_("Silver City")
-N_("Sindal")
-N_("Singapore")
-N_("Sioux City")
-N_("Sioux Falls")
-N_("Sitka")
-N_("Sivas")
-N_("Sivrihisar")
-N_("Skagway")
-N_("Skiathos")
-N_("Skien/Geiteryggen")
-N_("Skive")
-N_("Skopje")
-N_("Skwentna")
-N_("Slana")
-N_("Slovakia")
-N_("Slovenia")
-N_("Smithers")
-N_("Smyrna")
-N_("Snowshoe Lake")
-N_("Sochi")
-N_("Socorro")
-N_("Socotra")
-N_("Soda Springs")
-N_("Sofia")
-N_("Sogndal")
-N_("Soldotna")
-N_("Somerset")
-N_("Sonderborg")
-N_("Songmu Ab")
-N_("Sorkjosen")
-N_("South Africa")
-N_("Southampton")
-N_("South Bend")
-N_("South Carolina")
-N_("South Dakota")
-N_("Southend")
-N_("South Marsh Island")
-N_("South Timbalier")
-N_("Spain")
-N_("Sparrevohn")
-N_("Spencer")
-N_("Spickard")
-N_("Split")
-N_("Spokane")
-N_("Spokane-Parkwater")
-N_("Springbok")
-N_("Springfield")
-N_("Stampede Pass")
-N_("State College")
-N_("Stauning")
-N_("Staunton")
-N_("Stavanger/Sola")
-N_("Staverton")
-N_("Stavropol")
-N_("St Cloud")
-N_("Steamboat Springs")
-N_("Stephenville")
-N_("St. George")
-N_("Stillwater")
-N_("St. John's")
-N_("St Johnsbury")
-N_("St Joseph")
-N_("St Louis")
-N_("St Louis-Spirit")
-N_("Stockholm (Arlanda)")
-N_("Stockholm (Bromma)")
-N_("Stockton")
-N_("Stokmarknes/Skagen")
-N_("Stord/Sorstokken")
-N_("Storm Lake")
-N_("Stornoway")
-N_("St Paul")
-N_("St Petersburg")
-N_("St Petersburg / Clearwater")
-N_("Strasbourg")
-N_("Strevell")
-N_("St Simon's Island")
-N_("Stumpy Point")
-N_("Sturgeon Bay")
-N_("Stuttgart")
-N_("Sucre")
-N_("Sumburgh")
-N_("Sumter")
-N_("Sumter (2)")
-N_("Sundsvall-Harnosand")
-N_("Sungshan/Taipei")
-N_("Superior")
-N_("Suriname")
-N_("Sutton")
-N_("Suwon Ab")
-N_("Svalbard")
-N_("Svolvaer/Helle")
-N_("Sweden")
-N_("Swift Current")
-N_("Switzerland")
-N_("Sydney")
-N_("Syktyvkar")
-N_("Sympheropol")
-N_("Syracuse")
-N_("Szczecin")
-N_("Szombathely")
-N_("Tabatinga")
-N_("Tabriz")
-N_("Tabuk")
-N_("Tachikawa Ab")
-N_("Tacna")
-N_("Tacoma")
-N_("Tacoma-Lakewood")
-N_("Tacuarembo")
-N_("Taegu")
-N_("Taegu Ab")
-N_("Taejon")
-N_("Tahoe Valley")
-N_("Taichung")
-N_("Taif")
-N_("Tainan")
-N_("Taiwan")
-N_("Taiyuan")
-N_("Taiz")
-N_("Tajima")
-N_("Takamatsu Airport")
-N_("Talara")
-N_("Talinn")
-N_("Talkeetna")
-N_("Tallahassee")
-N_("Tamanrasset")
-N_("Tamanrasset/Aguenna")
-N_("Tampa")
-N_("Tampa-Macdill AFB")
-N_("Tampere")
-N_("Tampico")
-N_("Tanana")
-N_("Tanegashima Airport")
-N_("Taos")
-N_("Taoyuan")
-N_("Tapachula")
-N_("Taranto")
-N_("Tarbes")
-N_("Tarija")
-N_("Tarvisio")
-N_("Tatalina")
-N_("Tateyama Ab")
-N_("Taunton")
-N_("Tebessa")
-N_("Tees-Side")
-N_("Tegucigalpa")
-N_("Tehran-Mehrabad")
-N_("Tela")
-N_("Temple")
-N_("Tennessee")
-N_("Tepic")
-N_("Teresina")
-N_("Terre Haute")
-N_("Terrell")
-N_("Teterboro")
-N_("Texarkana")
-N_("Texas")
-N_("The Dalles")
-N_("Thessaloniki")
-N_("Thief River Falls")
-N_("Thiruvananthapuram")
-N_("Thisted")
-N_("Thompson Falls")
-N_("Thumrait")
-N_("Tianjin")
-N_("Tijuana")
-N_("Timisoara")
-N_("Tin City")
-N_("Tirana")
-N_("Tiree")
-N_("Tirgu Mures")
-N_("Tiruchchirapalli")
-N_("Titusville")
-N_("Tivat")
-N_("Tlemcen Zenata")
-N_("Tobias Bolanos")
-N_("Tocumen")
-N_("Togiak Village")
-N_("Tokachi GSDF")
-N_("Tokunoshima Island")
-N_("Tokushima Ab")
-N_("Tokyo Heliport")
-N_("Tokyo International Airport")
-N_("Tokyo New International Airport")
-N_("Toledo")
-N_("Toluca")
-N_("Tonopah")
-N_("Topeka")
-N_("Topeka-Forbes Field")
-N_("Torino/Bric Della Croce")
-N_("Torino/Caselle")
-N_("Toronto")
-N_("Torp")
-N_("Torrance")
-N_("Torreon")
-N_("Tottori Airport")
-N_("Toulouse")
-N_("Toul-Rosieres")
-N_("Tours-St-Symphorien")
-N_("Toussus-Le Noble")
-N_("Townsville")
-N_("Toyama Airport")
-N_("Trabzon")
-N_("Trapani")
-N_("Traverse City")
-N_("Trelew")
-N_("Trenton")
-N_("Trevico")
-N_("Treviso/Istrana")
-N_("Treviso/S.Angelo")
-N_("Trieste")
-N_("Trinidad")
-N_("Tripoli")
-N_("Tromso/Langnes")
-N_("Trondheim/Vaernes")
-N_("Troutdale")
-N_("Troyes/Barberey")
-N_("Truckee")
-N_("Truth or Consequences")
-N_("Tsuiki Ab")
-N_("Tsushima Airport")
-N_("Tucson")
-N_("Tucson-Davis AFB")
-N_("Tucuman")
-N_("Tucumcari")
-N_("Tucurui")
-N_("Tulancingo")
-N_("Tulcea")
-N_("Tulsa")
-N_("Tupelo")
-N_("Turaif")
-N_("Turin")
-N_("Turkey")
-N_("Turku")
-N_("Tuscaloosa")
-N_("Tuxtla Gutierrez")
-N_("Twenthe")
-N_("Twentynine Palms")
-N_("Twin Falls")
-N_("Tyler")
-N_("Tyndall AFB")
-N_("Tyumen")
-N_("Uberaba")
-N_("Ufa")
-N_("Ukiah")
-N_("Ukraine")
-N_("Ulan-Ude")
-N_("Ulsan")
-N_("Ulyanovsk")
-N_("Umea")
-N_("Umiat")
-N_("Unalakleet")
-N_("United Arab Emirates ")
-N_("United Kingdom")
-N_("United States")
-N_("Unst")
-N_("Upington")
-N_("Uruapan")
-N_("Uruguaiana")
-N_("Uruguay")
-N_("Urumqi")
-N_("Utah")
-N_("Utica")
-N_("Utrecht/Soesterberg")
-N_("Utsunomiya Ab")
-N_("Uzhgorod")
-N_("Vadso")
-N_("Vaerlose")
-N_("Vagar")
-N_("Valdez 2")
-N_("Valdosta")
-N_("Valdosta-Moody AFB")
-N_("Valencia")
-N_("Valentine")
-N_("Valera*")
-N_("Valkenburg")
-N_("Valley")
-N_("Valparaiso")
-N_("Valparaiso-Eglin AFB")
-N_("Van")
-N_("Vancouver")
-N_("Vandel")
-N_("Vandenberg AFB")
-N_("Vandenberg Range")
-N_("Van Nuys")
-N_("Varadero")
-N_("Varanasi/Babatpur")
-N_("Varna")
-N_("Vasteras")
-N_("Vaxjo")
-N_("Venezia")
-N_("Venezuela")
-N_("Venice")
-N_("Veracruz")
-N_("Vermillion")
-N_("Vermont")
-N_("Vernal")
-N_("Vero Beach")
-N_("Vicenza")
-N_("Vichy-Charmeil")
-N_("Vichy-Rolla")
-N_("Vicksburg")
-N_("Victoria")
-N_("Viet Nam")
-N_("Vigo")
-N_("Vilhena")
-N_("Villacoublay")
-N_("Villafranca")
-N_("Villahermosa")
-N_("Villamontes")
-N_("Villa Reynolds")
-N_("Vilnius")
-N_("Virginia")
-N_("Virginia Beach")
-N_("Virginia Tech Airport")
-N_("Viru-Viru")
-N_("Visalia")
-N_("Visby")
-N_("Viterbo")
-N_("Vitoria")
-N_("Vladikavkaz")
-N_("Vladivostok")
-N_("Vlieland")
-N_("Vojens/Skrydstrup")
-N_("Volgograd")
-N_("Volkel")
-N_("Volk Field")
-N_("Voronezh")
-N_("Voslau")
-N_("Waco")
-N_("Wadi Al Dawasser Airport")
-N_("Wainwright")
-N_("Wakefield")
-N_("Wakkanai Airport")
-N_("Walla Walla")
-N_("Wallops Island")
-N_("Walnut Ridge")
-N_("Warner Robins")
-N_("Warroad")
-N_("Warszawa")
-N_("Washington")
-N_("Washington/Dulles")
-N_("Waterbury")
-N_("Waterloo")
-N_("Watertown")
-N_("Waterville")
-N_("Waukesha")
-N_("Wausau")
-N_("Waycross")
-N_("Waynesboro")
-N_("Webster City")
-N_("Wejh")
-N_("Wellington")
-N_("Wenatchee")
-N_("Wendover")
-N_("West Atlanta")
-N_("West Burke")
-N_("Westerland")
-N_("Westfield")
-N_("Westhampton")
-N_("West Palm Beach")
-N_("West Virginia")
-N_("West Yellowstone")
-N_("West Yellowstone (2)")
-N_("Wheeling")
-N_("Whidbey Island")
-N_("Whitefield")
-N_("White Plains")
-N_("White Sulphur")
-N_("Whittier")
-N_("Wichita")
-N_("Wichita Falls")
-N_("Wichita-Jabara")
-N_("Wichita-McConnell AFB")
-N_("Wick")
-N_("Wien")
-N_("Wildwood")
-N_("Wilkes - Barre")
-N_("Williams Field")
-N_("Williamsport")
-N_("Williston")
-N_("Willoughby")
-N_("Willow Airport")
-N_("Wilmington")
-N_("Winchester")
-N_("Windsor")
-N_("Windsor Locks")
-N_("Wink")
-N_("Winnemucca")
-N_("Winnipeg")
-N_("Winslow")
-N_("Winston-Salem")
-N_("Winter Haven")
-N_("Winter Park")
-N_("Wiscasset")
-N_("Wisconsin")
-N_("Wisconsin Rapids")
-N_("Wise")
-N_("Woensdrecht")
-N_("Wolf Point")
-N_("Woong Cheon")
-N_("Wooster")
-N_("Worcester")
-N_("Worland")
-N_("Worthington")
-N_("Wrangell")
-N_("Wrightstown / Mcguire AFB")
-N_("Wuchia Observatory")
-N_("Wyoming")
-N_("Xiamen")
-N_("Yacuiba")
-N_("Yakima")
-N_("Yakushima")
-N_("Yakutat")
-N_("Yakutsk")
-N_("Yamagata Airport")
-N_("Yamaguchi Ube Airport")
-N_("Yankton")
-N_("Yao Airport")
-N_("Yechon Ab")
-N_("Yekaterinburg")
-N_("Yellowknife")
-N_("Yellowstone")
-N_("Yemen")
-N_("Yenbo")
-N_("Yeoju Range")
-N_("Yeonpyeungdo")
-N_("Yeovilton")
-N_("Yokosuka Fwf")
-N_("Yokota Ab")
-N_("Yongsan/H-208 Hp")
-N_("Yoro")
-N_("Yosu")
-N_("Youngstown")
-N_("Ypsilanti")
-N_("Yugoslavia")
-N_("Yukon")
-N_("Yuma MCAS")
-N_("Yurimaguas")
-N_("Yuzhno-Sakhalinsk")
-N_("Zacatecas")
-N_("Zadar")
-N_("Zagreb")
-N_("Zakinthos")
-N_("Zama Airfield")
-N_("Zanesville")
-N_("Zaragoza")
-N_("Zell Am See")
-N_("Zuni Pueblo")
-N_("Zurich")
diff --git a/my-evolution/Makefile.am b/my-evolution/Makefile.am
deleted file mode 100644
index 4a1e159723..0000000000
--- a/my-evolution/Makefile.am
+++ /dev/null
@@ -1,130 +0,0 @@
-INCLUDES = \
- -I$(top_srcdir) \
- -I$(top_srcdir)/shell \
- -I$(top_builddir)/shell \
- -I$(top_srcdir)/calendar \
- -I$(top_builddir)/calendar/cal-client \
- -I$(top_srcdir)/libical/src/libical \
- -I$(top_builddir)/libical/src/libical \
- -DEVOLUTION_GLADEDIR=\""$(gladedir)"\" \
- -DEVOLUTION_LOCALEDIR=\""$(localedir)"\" \
- -DEVOLUTION_DATADIR=\""$(datadir)"\" \
- -DG_LOG_DOMAIN=\"evolution-executive-summary\" \
- $(EVOLUTION_EXECUTIVE_SUMMARY_CFLAGS)
-
-IDLS = \
- $(top_srcdir)/mail/Mail.idl
-
-MAIL_GENERATED = \
- Mail.h \
- Mail-common.c \
- Mail-skels.c \
- Mail-stubs.c
-
-$(MAIL_GENERATED): $(IDLS)
- $(ORBIT_IDL) -I $(srcdir) `$(GNOME_CONFIG) --cflags idl` $(top_srcdir)/mail/Mail.idl
-
-summary_sources = \
- $(MAIL_GENERATED) \
- component-factory.c \
- component-factory.h \
- e-cell-tri.c \
- e-cell-tri.h \
- e-summary.c \
- e-summary.h \
- e-summary-calendar.c \
- e-summary-calendar.h \
- e-summary-factory.c \
- e-summary-factory.h \
- e-summary-mail.c \
- e-summary-mail.h \
- e-summary-offline-handler.c \
- e-summary-offline-handler.h \
- e-summary-preferences.c \
- e-summary-preferences.h \
- e-summary-rdf.c \
- e-summary-rdf.h \
- e-summary-shown.c \
- e-summary-shown.h \
- e-summary-table.c \
- e-summary-table.h \
- e-summary-tasks.c \
- e-summary-tasks.h \
- e-summary-type.h \
- e-summary-weather.c \
- e-summary-weather.h \
- metar.c \
- metar.h \
- my-evolution-html.h \
- weather.h
-
-summary_exe_sources = \
- main.c
-
-summary_libs = \
- $(top_builddir)/calendar/gui/alarm-notify/libalarm.a \
- $(top_builddir)/shell/libeshell.la \
- $(top_builddir)/widgets/misc/libemiscwidgets.a \
- $(top_builddir)/e-util/libeutil.la \
- $(top_builddir)/calendar/cal-client/libcal-client.la \
- $(top_builddir)/calendar/cal-util/libcal-util.la \
- $(top_builddir)/libversit/libversit.a \
- $(top_builddir)/libical/src/libical/libical-evolution.la \
- $(top_builddir)/libwombat/libwombat.la \
- $(EVOLUTION_EXECUTIVE_SUMMARY_LIBS)
-
-if ENABLE_SHLIB_COMPONENTS
-
-lib_LTLIBRARIES = libevolution-executive-summary.la
-
-libevolution_executive_summary_la_SOURCES = \
- $(summary_sources)
-
-libevolution_executive_summary_la_LIBADD = \
- $(summary_libs)
-
-else
-
-bin_PROGRAMS = evolution-executive-summary
-
-evolution_executive_summary_SOURCES = \
- $(summary_sources) \
- $(summary_exe_sources)
-
-evolution_executive_summary_LDADD = \
- $(summary_libs)
-
-endif
-
-Locationdir = $(datadir)/evolution
-Location_DATA = Locations
-
-oaf_files = GNOME_Evolution_Summary.oaf
-oaf_in_files = $(oaf_files:.oaf=.oaf.in)
-oaf_in_in_files = $(oaf_files:.oaf=.oaf.in.in)
-
-oafdir = $(datadir)/oaf
-oaf_DATA = $(oaf_files)
-
-gladedir = $(datadir)/evolution/glade
-glade_DATA = my-evolution.glade
-
-@XML_I18N_MERGE_OAF_RULE@
-
-EXTRA_DIST = \
- $(summary_sources) \
- $(summary_exe_sources) \
- $(oaf_files) \
- $(oaf_in_files) \
- $(oaf_in_in_files) \
- $(oaf_DATA) \
- $(Location_DATA) \
- $(glade_DATA) \
- Locations.h \
- Location-translation-script \
- check-empty.xpm \
- check-filled.xpm \
- check-none.xpm
-
-dist-hook:
- cd $(distdir); rm -f $(BUILT_SOURCES)
diff --git a/my-evolution/check-empty.xpm b/my-evolution/check-empty.xpm
deleted file mode 100644
index 746b20234e..0000000000
--- a/my-evolution/check-empty.xpm
+++ /dev/null
@@ -1,21 +0,0 @@
-/* XPM */
-static const char * check_empty_xpm[] = {
-"16 16 2 1",
-" c None",
-". c #000000",
-" ",
-" ",
-" ............ ",
-" . . ",
-" . . ",
-" . . ",
-" . . ",
-" . . ",
-" . . ",
-" . . ",
-" . . ",
-" . . ",
-" . . ",
-" ............ ",
-" ",
-" "};
diff --git a/my-evolution/check-filled.xpm b/my-evolution/check-filled.xpm
deleted file mode 100644
index c0468fc25b..0000000000
--- a/my-evolution/check-filled.xpm
+++ /dev/null
@@ -1,21 +0,0 @@
-/* XPM */
-static const char * check_filled_xpm[] = {
-"16 16 2 1",
-" c None",
-". c #000000",
-" ",
-" ",
-" ............ ",
-" . . ",
-" . . . ",
-" . .. . ",
-" . ... . ",
-" . . ... . ",
-" . .. ... . ",
-" . ..... . ",
-" . ... . ",
-" . . . ",
-" . . ",
-" ............ ",
-" ",
-" "};
diff --git a/my-evolution/check-none.xpm b/my-evolution/check-none.xpm
deleted file mode 100644
index 7213f1c565..0000000000
--- a/my-evolution/check-none.xpm
+++ /dev/null
@@ -1,20 +0,0 @@
-/* XPM */
-static const char * check_none_xpm[] = {
-"16 16 1 1",
-" c None",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" "};
diff --git a/my-evolution/component-factory.c b/my-evolution/component-factory.c
deleted file mode 100644
index 30196985d9..0000000000
--- a/my-evolution/component-factory.c
+++ /dev/null
@@ -1,177 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* component-factory.c
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Iain Holmes <iain@ximian.com>
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <bonobo/bonobo-object.h>
-#include <bonobo/bonobo-generic-factory.h>
-#include <bonobo/bonobo-context.h>
-#include <bonobo/bonobo-shlib-factory.h>
-
-#include <shell/evolution-shell-component.h>
-#include <shell/Evolution.h>
-
-#include <gal/widgets/e-gui-utils.h>
-
-#include "e-summary-factory.h"
-#include "e-summary-offline-handler.h"
-#include "e-summary.h"
-#include "e-summary-preferences.h"
-
-#include "component-factory.h"
-
-#define COMPONENT_ID "OAFIID:GNOME_Evolution_Summary_ShellComponent"
-#define COMPONENT_FACTORY_ID "OAFIID:GNOME_Evolution_Summary_ShellComponentFactory"
-
-static gint running_objects = 0;
-static ESummaryPrefs *global_preferences = NULL;
-
-static const EvolutionShellComponentFolderType folder_types[] = {
- { "summary", "evolution-today.png", N_("Summary"), N_("Folder containing the Evolution Summary"), FALSE, NULL, NULL },
- { NULL, NULL }
-};
-
-static char *evolution_dir = NULL;
-
-/* EvolutionShellComponent methods and signals */
-
-static EvolutionShellComponentResult
-create_view (EvolutionShellComponent *shell,
- const char *physical_uri,
- const char *folder_type,
- const char *view_info,
- BonoboControl **control_return,
- void *closure)
-{
- EvolutionShellClient *shell_client;
- ESummaryOfflineHandler *offline_handler;
- GNOME_Evolution_Shell corba_shell;
- BonoboControl *control;
-
- if (g_strcasecmp (folder_type, "Summary") != 0) {
- return EVOLUTION_SHELL_COMPONENT_UNSUPPORTEDTYPE;
- }
-
- offline_handler = gtk_object_get_data (GTK_OBJECT (shell),
- "offline-handler");
- shell_client = evolution_shell_component_get_owner (shell);
- corba_shell = bonobo_object_corba_objref (BONOBO_OBJECT (shell_client));
- control = e_summary_factory_new_control (physical_uri, corba_shell,
- offline_handler, global_preferences);
- if (!control)
- return EVOLUTION_SHELL_COMPONENT_NOTFOUND;
-
- *control_return = control;
-
- return EVOLUTION_SHELL_COMPONENT_OK;
-}
-
-static void
-owner_set_cb (EvolutionShellComponent *shell_component,
- EvolutionShellClient *shell_client,
- const char *evolution_homedir,
- gpointer user_data)
-{
- GNOME_Evolution_Shell corba_shell;
-
- if (evolution_dir != NULL) {
- evolution_dir = g_strdup (evolution_homedir);
- }
-
- corba_shell = bonobo_object_corba_objref (BONOBO_OBJECT (shell_client));
-
- e_summary_folder_init_folder_store (corba_shell);
- e_summary_preferences_register_config_control_factory ();
-}
-
-static void
-owner_unset_cb (EvolutionShellComponent *shell_component,
- gpointer user_data)
-{
- gtk_main_quit ();
-}
-
-static void
-component_destroy (BonoboObject *factory,
- gpointer user_data)
-{
- running_objects--;
-
- if (running_objects > 0) {
- return;
- }
-
- gtk_main_quit ();
-}
-
-static BonoboObject *
-create_component (BonoboGenericFactory *factory,
- void *data)
-{
- EvolutionShellComponent *shell_component;
- ESummaryOfflineHandler *offline_handler;
-
- running_objects++;
-
- if (global_preferences == NULL) {
- global_preferences = e_summary_preferences_init ();
- }
-
- shell_component = evolution_shell_component_new (folder_types,
- NULL,
- create_view,
- NULL, NULL,
- NULL, NULL,
- NULL, NULL);
- gtk_signal_connect (GTK_OBJECT (shell_component), "destroy",
- GTK_SIGNAL_FUNC (component_destroy), 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);
-
- offline_handler = e_summary_offline_handler_new ();
- gtk_object_set_data (GTK_OBJECT (shell_component), "offline-handler",
- offline_handler);
- bonobo_object_add_interface (BONOBO_OBJECT (shell_component), BONOBO_OBJECT (offline_handler));
-
- return BONOBO_OBJECT (shell_component);
-}
-
-/* Factory for the out-of-proc case. */
-void
-component_factory_init (void)
-{
- BonoboGenericFactory *factory;
-
- factory = bonobo_generic_factory_new (COMPONENT_FACTORY_ID,
- create_component,
- NULL);
-
- if (factory == NULL)
- g_error ("Cannot register Evolution Summary component factory.");
-}
-
-/* Factory for the shlib case. */
-BONOBO_OAF_SHLIB_FACTORY (COMPONENT_FACTORY_ID, "Evolution Summary component", create_component, NULL)
diff --git a/my-evolution/component-factory.h b/my-evolution/component-factory.h
deleted file mode 100644
index f15b012009..0000000000
--- a/my-evolution/component-factory.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* component-factory.h
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Iain Holmes <iain@ximian.com>
- */
-
-#ifndef __COMPONENT_FACTORY_H__
-#define __COMPONENT_FACTORY_H__
-
-void component_factory_init (void);
-
-#endif
diff --git a/my-evolution/e-cell-tri.c b/my-evolution/e-cell-tri.c
deleted file mode 100644
index 677ce26a2c..0000000000
--- a/my-evolution/e-cell-tri.c
+++ /dev/null
@@ -1,121 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Iain Holmes <iain@ximian.com>
- *
- * Copyright 2002 Ximain, Inc. (www.ximian.com)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <gdk/gdkkeysyms.h>
-#include <gdk-pixbuf/gdk-pixbuf.h>
-#include <gal/util/e-util.h>
-#include <gal/e-table/e-table-item.h>
-
-#include "e-cell-tri.h"
-
-#include "check-none.xpm"
-#include "check-empty.xpm"
-#include "check-filled.xpm"
-
-#define PARENT_TYPE e_cell_toggle_get_type ()
-
-static GdkPixbuf *checks[3];
-
-static void
-set_value (ECellView *view,
- int model_col,
- int view_col,
- int row,
- int value)
-{
- ECell *ecell = view->ecell;
- ECellToggle *toggle = E_CELL_TOGGLE (ecell);
-
- if (value >= toggle->n_states) {
- g_print ("Value 2: %d\n", value);
- value = 1;
- }
-
- e_table_model_set_value_at (view->e_table_model,
- model_col, row, GINT_TO_POINTER (value));
-}
-
-static gint
-event (ECellView *ecell_view,
- GdkEvent *event,
- int model_col,
- int view_col,
- int row,
- ECellFlags flags,
- ECellActions *actions)
-{
- void *_value = e_table_model_value_at (ecell_view->e_table_model, model_col, row);
- const int value = GPOINTER_TO_INT (_value);
-
- switch (event->type) {
- case GDK_KEY_PRESS:
- if (event->key.keyval != GDK_space) {
- return FALSE;
- }
- /* Fall through */
- case GDK_BUTTON_PRESS:
- if (e_table_model_is_cell_editable (ecell_view->e_table_model, model_col, row) == FALSE) {
- return FALSE;
- }
- if (value == 0) {
- return FALSE;
- }
-
- set_value (ecell_view, model_col, view_col, row, value + 1);
- return TRUE;
-
- default:
- return FALSE;
- }
-
- return TRUE;
-}
-
-static void
-e_cell_tri_class_init (GtkObjectClass *object_class)
-{
- ECellClass *e_cell_class = E_CELL_CLASS (object_class);
-
- e_cell_class->event = event;
-
- checks[0] = gdk_pixbuf_new_from_xpm_data (check_none_xpm);
- checks[1] = gdk_pixbuf_new_from_xpm_data (check_empty_xpm);
- checks[2] = gdk_pixbuf_new_from_xpm_data (check_filled_xpm);
-
-}
-
-E_MAKE_TYPE (e_cell_tri, "ECellTri", ECellTri, e_cell_tri_class_init, NULL, PARENT_TYPE);
-
-ECell *
-e_cell_tri_new (void)
-{
- ECellTri *ect = gtk_type_new (e_cell_tri_get_type ());
-
- e_cell_toggle_construct (E_CELL_TOGGLE (ect), 2, 3, checks);
-
- return (ECell *) ect;
-}
-
diff --git a/my-evolution/e-cell-tri.h b/my-evolution/e-cell-tri.h
deleted file mode 100644
index 52221e3cb6..0000000000
--- a/my-evolution/e-cell-tri.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Iain Holmes <iain@ximian.com>
- *
- * Copyright 2002 Ximain, Inc. (www.ximian.com)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifndef __E_CELL_TRI_H__
-#define __E_CELL_TRI_H__
-
-#include <gal/e-table/e-cell-toggle.h>
-#include <libgnome/gnome-defs.h>
-
-BEGIN_GNOME_DECLS
-
-typedef struct _ECellTri {
- ECellToggle parent;
-} ECellTri;
-
-typedef struct _ECellTriClass {
- ECellToggleClass parent_class;
-} ECellTriClass;
-
-GtkType e_cell_tri_get_type (void);
-ECell *e_cell_tri_new (void);
-
-END_GNOME_DECLS
-
-#endif
diff --git a/my-evolution/e-summary-calendar.c b/my-evolution/e-summary-calendar.c
deleted file mode 100644
index 6ad68427b4..0000000000
--- a/my-evolution/e-summary-calendar.c
+++ /dev/null
@@ -1,574 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-summary-calendar.c
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Iain Holmes <iain@ximian.com>
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <gnome.h>
-#include <gal/widgets/e-unicode.h>
-
-#include "e-summary-calendar.h"
-#include "e-summary.h"
-#include <cal-client/cal-client.h>
-#include <cal-util/timeutil.h>
-
-#include <bonobo/bonobo-exception.h>
-#include <bonobo/bonobo-moniker-util.h>
-#include <bonobo-conf/bonobo-config-database.h>
-
-#include <liboaf/liboaf.h>
-
-#include <ical.h>
-
-struct _ESummaryCalendar {
- CalClient *client;
-
- char *html;
- gboolean wants24hr;
-};
-
-const char *
-e_summary_calendar_get_html (ESummary *summary)
-{
- if (summary->calendar == NULL) {
- return NULL;
- }
-
- return summary->calendar->html;
-}
-
-typedef struct {
- char *uid;
- CalComponent *comp;
- CalComponentDateTime dt;
- icaltimezone *zone;
-} ESummaryCalEvent;
-
-/* Returns TRUE if the TZIDs are equivalent, i.e. both NULL or the same. */
-static gboolean
-cal_component_compare_tzid (const char *tzid1, const char *tzid2)
-{
- gboolean retval = TRUE;
-
- if (tzid1) {
- if (!tzid2 || strcmp (tzid1, tzid2))
- retval = FALSE;
- } else {
- if (tzid2)
- retval = FALSE;
- }
-
- return retval;
-}
-
-gboolean
-e_cal_comp_util_compare_event_timezones (CalComponent *comp,
- CalClient *client,
- icaltimezone *zone)
-{
- CalClientGetStatus status;
- CalComponentDateTime start_datetime, end_datetime;
- const char *tzid;
- gboolean retval = FALSE;
- icaltimezone *start_zone, *end_zone;
- int offset1, offset2;
-
- tzid = icaltimezone_get_tzid (zone);
-
- cal_component_get_dtstart (comp, &start_datetime);
- cal_component_get_dtend (comp, &end_datetime);
-
- /* If either the DTSTART or the DTEND is a DATE value, we return TRUE.
- Maybe if one was a DATE-TIME we should check that, but that should
- not happen often. */
- if ((start_datetime.value && start_datetime.value->is_date)
- || (end_datetime.value && end_datetime.value->is_date)) {
- retval = TRUE;
- goto out;
- }
-
- /* If the event uses UTC for DTSTART & DTEND, return TRUE. Outlook
- will send single events as UTC, so we don't want to mark all of
- these. */
- if ((!start_datetime.value || start_datetime.value->is_utc)
- && (!end_datetime.value || end_datetime.value->is_utc)) {
- retval = TRUE;
- goto out;
- }
-
- /* If the event uses floating time for DTSTART & DTEND, return TRUE.
- Imported vCalendar files will use floating times, so we don't want
- to mark all of these. */
- if (!start_datetime.tzid && !end_datetime.tzid) {
- retval = TRUE;
- goto out;
- }
-
- /* FIXME: DURATION may be used instead. */
- if (cal_component_compare_tzid (tzid, start_datetime.tzid)
- && cal_component_compare_tzid (tzid, end_datetime.tzid)) {
- /* If both TZIDs are the same as the given zone's TZID, then
- we know the timezones are the same so we return TRUE. */
- retval = TRUE;
- } else {
- /* If the TZIDs differ, we have to compare the UTC offsets
- of the start and end times, using their own timezones and
- the given timezone. */
- status = cal_client_get_timezone (client,
- start_datetime.tzid,
- &start_zone);
- if (status != CAL_CLIENT_GET_SUCCESS)
- goto out;
-
- if (start_datetime.value) {
- offset1 = icaltimezone_get_utc_offset (start_zone,
- start_datetime.value,
- NULL);
- offset2 = icaltimezone_get_utc_offset (zone,
- start_datetime.value,
- NULL);
- if (offset1 != offset2)
- goto out;
- }
-
- status = cal_client_get_timezone (client,
- end_datetime.tzid,
- &end_zone);
- if (status != CAL_CLIENT_GET_SUCCESS)
- goto out;
-
- if (end_datetime.value) {
- offset1 = icaltimezone_get_utc_offset (end_zone,
- end_datetime.value,
- NULL);
- offset2 = icaltimezone_get_utc_offset (zone,
- end_datetime.value,
- NULL);
- if (offset1 != offset2)
- goto out;
- }
-
- retval = TRUE;
- }
-
- out:
-
- cal_component_free_datetime (&start_datetime);
- cal_component_free_datetime (&end_datetime);
-
- return retval;
-}
-
-static int
-e_summary_calendar_event_sort_func (const void *e1,
- const void *e2)
-{
- ESummaryCalEvent *event1, *event2;
-
- event1 = *(ESummaryCalEvent **) e1;
- event2 = *(ESummaryCalEvent **) e2;
-
- if (event1->dt.value == NULL || event2->dt.value == NULL) {
- return 0;
- }
-
- return icaltime_compare (*(event1->dt.value), *(event2->dt.value));
-}
-
-struct _RecurData {
- ESummary *summary;
- GPtrArray *array;
- ESummaryCalEvent *event;
-};
-
-static gboolean
-add_recurrances (CalComponent *comp,
- time_t start,
- time_t end,
- gpointer data)
-{
- struct _RecurData *recur = data;
- struct icaltimetype v, *p;
- ESummaryCalEvent *event;
-
- event = g_new (ESummaryCalEvent, 1);
- v = icaltime_from_timet_with_zone (start, FALSE, recur->summary->tz);
- p = g_new (struct icaltimetype, 1);
-
- event->dt.value = p;
-
- p->year = v.year;
- p->month = v.month;
- p->day = v.day;
- p->hour = v.hour;
- p->minute = v.minute;
- p->second = v.second;
- p->is_utc = v.is_utc;
- p->is_date = v.is_date;
- p->is_daylight = v.is_daylight;
- p->zone = v.zone;
-
- event->dt.tzid = recur->summary->timezone;
- event->comp = comp;
- event->uid = g_strdup (recur->event->uid);
- event->zone = recur->summary->tz;
-
- gtk_object_ref (GTK_OBJECT (comp));
-
- g_ptr_array_add (recur->array, event);
- return TRUE;
-}
-
-static GPtrArray *
-uids_to_array (ESummary *summary,
- CalClient *client,
- GList *uids,
- time_t begin,
- time_t end)
-{
- GList *p;
- GPtrArray *array;
-
- g_return_val_if_fail (IS_E_SUMMARY (summary), NULL);
- g_return_val_if_fail (client != NULL, NULL);
- g_return_val_if_fail (uids != NULL, NULL);
-
- array = g_ptr_array_new ();
- for (p = uids; p; p = p->next) {
- ESummaryCalEvent *event;
- CalClientGetStatus status;
-
- event = g_new (ESummaryCalEvent, 1);
-
- event->uid = g_strdup (p->data);
- status = cal_client_get_object (client, p->data, &event->comp);
- if (status != CAL_CLIENT_GET_SUCCESS) {
- g_free (event);
- continue;
- }
-
- if (cal_component_has_recurrences (event->comp) == TRUE) {
- struct _RecurData *recur;
-
- recur = g_new (struct _RecurData, 1);
- recur->event = event;
- recur->array = array;
- recur->summary = summary;
- cal_recur_generate_instances (event->comp, begin, end,
- add_recurrances, recur,
- cal_client_resolve_tzid_cb, client,
- recur->summary->tz);
- g_free (recur);
- g_free (event->uid);
- g_free (event);
- } else {
- cal_component_get_dtstart (event->comp, &event->dt);
-
- status = cal_client_get_timezone (client, event->dt.tzid, &event->zone);
- if (status != CAL_CLIENT_GET_SUCCESS) {
- gtk_object_unref (GTK_OBJECT (event->comp));
- g_free (event);
- continue;
- }
-
- icaltimezone_convert_time (event->dt.value, event->zone, summary->tz);
- g_ptr_array_add (array, event);
- }
- }
-
- qsort (array->pdata, array->len, sizeof (ESummaryCalEvent *), e_summary_calendar_event_sort_func);
-
- return array;
-}
-
-static void
-free_event_array (GPtrArray *array)
-{
- int i;
-
- for (i = 0; i < array->len; i++) {
- ESummaryCalEvent *event;
-
- event = array->pdata[i];
- g_free (event->uid);
- gtk_object_unref (GTK_OBJECT (event->comp));
- }
-
- g_ptr_array_free (array, TRUE);
-}
-
-static gboolean
-generate_html (gpointer data)
-{
- ESummary *summary = data;
- ESummaryCalendar *calendar = summary->calendar;
- GList *uids;
- GString *string;
- char *tmp;
- time_t t, begin, end, f;
-
- /* Set the default timezone on the server. */
- if (summary->tz) {
- cal_client_set_default_timezone (calendar->client,
- summary->tz);
- }
-
- t = time (NULL);
- begin = time_day_begin_with_zone (t, summary->tz);
- switch (summary->preferences->days) {
- case E_SUMMARY_CALENDAR_ONE_DAY:
- end = time_day_end_with_zone (t, summary->tz);
- break;
-
- case E_SUMMARY_CALENDAR_FIVE_DAYS:
- f = time_add_day_with_zone (t, 5, summary->tz);
- end = time_day_end_with_zone (f, summary->tz);
- break;
-
- case E_SUMMARY_CALENDAR_ONE_WEEK:
- f = time_add_week_with_zone (t, 1, summary->tz);
- end = time_day_end_with_zone (f, summary->tz);
- break;
-
- case E_SUMMARY_CALENDAR_ONE_MONTH:
- default:
- f = time_add_month_with_zone (t, 1, summary->tz);
- end = time_day_end_with_zone (f, summary->tz);
- break;
- }
-
- uids = cal_client_get_objects_in_range (calendar->client,
- CALOBJ_TYPE_EVENT, begin, end);
- if (uids == NULL) {
- char *s1, *s2;
-
- s1 = e_utf8_from_locale_string (_("Appointments"));
- s2 = e_utf8_from_locale_string (_("No appointments"));
- g_free (calendar->html);
- calendar->html = g_strconcat ("<dl><dt><img src=\"myevo-appointments.png\" align=\"middle\" "
- "alt=\"\" width=\"48\" height=\"48\"> <b><a href=\"evolution:/local/Calendar\">",
- s1, "</a></b></dt><dd><b>", s2, "</b></dd></dl>", NULL);
- g_free (s1);
- g_free (s2);
-
-/* e_summary_draw (summary); */
- return FALSE;
- } else {
- GPtrArray *uidarray;
- int i;
- char *s;
-
- string = g_string_new ("<dl><dt><img src=\"myevo-appointments.png\" align=\"middle\" "
- "alt=\"\" width=\"48\" height=\"48\"> <b><a href=\"evolution:/local/Calendar\">");
- s = e_utf8_from_locale_string (_("Appointments"));
- g_string_append (string, s);
- g_free (s);
- g_string_append (string, "</a></b></dt><dd>");
-
- uidarray = uids_to_array (summary, calendar->client, uids, begin, end);
- for (i = 0; i < uidarray->len; i++) {
- ESummaryCalEvent *event;
- CalComponentText text;
- struct tm start_tm;
- char start_str[64], *start_str_utf, *img;
-
- event = uidarray->pdata[i];
- cal_component_get_summary (event->comp, &text);
-
- start_tm = icaltimetype_to_tm (event->dt.value);
- if (calendar->wants24hr == TRUE) {
- strftime (start_str, sizeof start_str, _("%k:%M %d %B"), &start_tm);
- } else {
- strftime (start_str, sizeof start_str, _("%l:%M %d %B"), &start_tm);
- }
-
- if (cal_component_has_alarms (event->comp)) {
- img = "es-appointments.png";
- } else if (e_cal_comp_util_compare_event_timezones (event->comp,
- calendar->client,
- summary->tz) == FALSE) {
- img = "timezone-16.xpm";
- } else {
- img = "new_appointment.xpm";
- }
-
- start_str_utf = e_utf8_from_locale_string (start_str);
- tmp = g_strdup_printf ("<img align=\"middle\" src=\"%s\" "
- "alt=\"\" width=\"16\" height=\"16\"> &#160; "
- "<font size=\"-1\"><a href=\"calendar:/%s\">%s, %s</a></font><br>",
- img,
- event->uid, start_str_utf, text.value ? text.value : _("No description"));
- g_free (start_str_utf);
-
- g_string_append (string, tmp);
- g_free (tmp);
- }
-
- free_event_array (uidarray);
- g_string_append (string, "</dd></dl>");
- }
-
- if (calendar->html) {
- g_free (calendar->html);
- }
- calendar->html = string->str;
- g_string_free (string, FALSE);
-
-/* e_summary_draw (summary); */
- return FALSE;
-}
-
-static void
-cal_opened_cb (CalClient *client,
- CalClientOpenStatus status,
- ESummary *summary)
-{
- if (status == CAL_CLIENT_OPEN_SUCCESS) {
- g_idle_add (generate_html, summary);
- } else {
- /* Need to work out what to do if there's an error */
- }
-}
-static void
-obj_changed_cb (CalClient *client,
- const char *uid,
- gpointer data)
-{
- g_idle_add (generate_html, data);
-}
-
-static void
-e_summary_calendar_protocol (ESummary *summary,
- const char *uri,
- void *closure)
-{
- ESummaryCalendar *calendar;
- CORBA_Environment ev;
- const char *comp_uri;
- GNOME_Evolution_Calendar_CompEditorFactory factory;
-
- calendar = (ESummaryCalendar *) closure;
-
- comp_uri = cal_client_get_uri (calendar->client);
-
- /* Get the factory */
- CORBA_exception_init (&ev);
- factory = oaf_activate_from_id ("OAFIID:GNOME_Evolution_Calendar_CompEditorFactory", 0, NULL, &ev);
- if (BONOBO_EX (&ev)) {
- g_message ("%s: Could not activate the component editor factory (%s)", __FUNCTION__,
- CORBA_exception_id (&ev));
- CORBA_exception_free (&ev);
- return;
- }
-
- GNOME_Evolution_Calendar_CompEditorFactory_editExisting (factory, comp_uri, (char *)uri + 10, &ev);
-
- if (BONOBO_EX (&ev)) {
- g_message ("%s: Execption while editing the component (%s)", __FUNCTION__,
- CORBA_exception_id (&ev));
- }
-
- CORBA_exception_free (&ev);
- bonobo_object_release_unref (factory, NULL);
-}
-
-static gboolean
-locale_uses_24h_time_format (void)
-{
- char s[16];
- time_t t = 0;
-
- strftime (s, sizeof s, "%p", gmtime (&t));
- return s[0] == '\0';
-}
-
-void
-e_summary_calendar_init (ESummary *summary)
-{
- Bonobo_ConfigDatabase db;
- CORBA_Environment ev;
- ESummaryCalendar *calendar;
- gboolean result;
-
- g_return_if_fail (summary != NULL);
-
- calendar = g_new (ESummaryCalendar, 1);
- summary->calendar = calendar;
- calendar->html = NULL;
-
- CORBA_exception_init (&ev);
- db = bonobo_get_object ("wombat:", "Bonobo/ConfigDatabase", &ev);
- if (BONOBO_EX (&ev) || db == CORBA_OBJECT_NIL) {
- CORBA_exception_free (&ev);
- g_warning ("Error getting Wombat. Using defaults");
- return;
- }
-
- CORBA_exception_free (&ev);
-
- calendar->client = cal_client_new ();
- if (calendar->client == NULL) {
- bonobo_object_release_unref (db, NULL);
- g_warning ("Error making the client");
- return;
- }
-
- gtk_signal_connect (GTK_OBJECT (calendar->client), "cal-opened",
- GTK_SIGNAL_FUNC (cal_opened_cb), summary);
- gtk_signal_connect (GTK_OBJECT (calendar->client), "obj-updated",
- GTK_SIGNAL_FUNC (obj_changed_cb), summary);
- gtk_signal_connect (GTK_OBJECT (calendar->client), "obj-removed",
- GTK_SIGNAL_FUNC (obj_changed_cb), summary);
-
- result = cal_client_open_default_calendar (calendar->client, FALSE);
- if (result == FALSE) {
- g_message ("Open calendar failed");
- }
-
- e_summary_add_protocol_listener (summary, "calendar", e_summary_calendar_protocol, calendar);
-
- calendar->wants24hr = bonobo_config_get_boolean_with_default (db, "/Calendar/Display/Use24HourFormat", locale_uses_24h_time_format (), NULL);
- bonobo_object_release_unref (db, NULL);
-}
-
-void
-e_summary_calendar_reconfigure (ESummary *summary)
-{
- generate_html (summary);
-}
-
-void
-e_summary_calendar_free (ESummary *summary)
-{
- ESummaryCalendar *calendar;
-
- g_return_if_fail (summary != NULL);
- g_return_if_fail (IS_E_SUMMARY (summary));
-
- calendar = summary->calendar;
- gtk_object_unref (GTK_OBJECT (calendar->client));
- g_free (calendar->html);
-
- g_free (calendar);
- summary->calendar = NULL;
-}
diff --git a/my-evolution/e-summary-calendar.h b/my-evolution/e-summary-calendar.h
deleted file mode 100644
index ab15e3d2a9..0000000000
--- a/my-evolution/e-summary-calendar.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-summary-calendar.h
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Iain Holmes <iain@ximian.com>
- */
-
-#ifndef __E_SUMMARY_CALENDAR_H__
-#define __E_SUMMARY_CALENDAR_H__
-
-#include "e-summary-type.h"
-
-typedef enum _ESummaryCalendarDays {
- E_SUMMARY_CALENDAR_ONE_DAY,
- E_SUMMARY_CALENDAR_FIVE_DAYS,
- E_SUMMARY_CALENDAR_ONE_WEEK,
- E_SUMMARY_CALENDAR_ONE_MONTH
-} ESummaryCalendarDays;
-
-typedef enum _ESummaryCalendarNumTasks {
- E_SUMMARY_CALENDAR_ALL_TASKS,
- E_SUMMARY_CALENDAR_TODAYS_TASKS
-} ESummaryCalendarNumTasks;
-
-typedef struct _ESummaryCalendar ESummaryCalendar;
-
-const char *e_summary_calendar_get_html (ESummary *summary);
-void e_summary_calendar_init (ESummary *summary);
-void e_summary_calendar_reconfigure (ESummary *summary);
-void e_summary_calendar_free (ESummary *summary);
-#endif
diff --git a/my-evolution/e-summary-factory.c b/my-evolution/e-summary-factory.c
deleted file mode 100644
index db84213374..0000000000
--- a/my-evolution/e-summary-factory.c
+++ /dev/null
@@ -1,159 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-summary-factory.c
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Iain Holmes <iain@ximian.com>
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <gtk/gtk.h>
-#include <bonobo/bonobo-control.h>
-#include <bonobo/bonobo-exception.h>
-#include <bonobo/bonobo-ui-util.h>
-
-#include "e-util/e-gui-utils.h"
-
-#include "e-summary.h"
-#include "e-summary-factory.h"
-#include "e-summary-offline-handler.h"
-#include "e-summary-preferences.h"
-#include "evolution-shell-component-utils.h" /* For E_PIXMAP */
-
-BonoboUIVerb verbs[] = {
- BONOBO_UI_VERB ("PrintMyEvolution", e_summary_print),
- BONOBO_UI_VERB ("Reload", e_summary_reload),
- BONOBO_UI_VERB_END
-};
-
-
-static EPixmap pixmaps [] = {
- E_PIXMAP ("/commands/PrintMyEvolution", "print.xpm"),
- E_PIXMAP ("/Toolbar/PrintMyEvolution", "buttons/print.png"),
- E_PIXMAP_END
-};
-
-static void
-control_activate (BonoboControl *control,
- BonoboUIComponent *ui_component,
- ESummary *summary)
-{
- Bonobo_UIContainer container;
-
- container = bonobo_control_get_remote_ui_container (control);
- bonobo_ui_component_set_container (ui_component, container);
- bonobo_object_release_unref (container, NULL);
-
- bonobo_ui_component_add_verb_list_with_data (ui_component, verbs, summary);
- bonobo_ui_component_freeze (ui_component, NULL);
-
- bonobo_ui_util_set_ui (ui_component, EVOLUTION_DATADIR,
- "my-evolution.xml", "my-evolution");
- e_pixmaps_update (ui_component, pixmaps);
-
- bonobo_ui_component_thaw (ui_component, NULL);
- e_summary_thaw (summary);
-}
-
-static void
-control_deactivate (BonoboControl *control,
- BonoboUIComponent *ui_component,
- ESummary *summary)
-{
- bonobo_ui_component_unset_container (ui_component);
- e_summary_freeze (summary);
-}
-
-static void
-control_activate_cb (BonoboControl *control,
- gboolean activate,
- ESummary *summary)
-{
- BonoboUIComponent *ui_component;
-
- ui_component = bonobo_control_get_ui_component (control);
-
- if (summary->shell_view_interface == NULL) {
- Bonobo_ControlFrame control_frame;
- CORBA_Environment ev;
-
- control_frame = bonobo_control_get_control_frame (control);
- if (control_frame == NULL) {
- goto out;
- }
-
- CORBA_exception_init (&ev);
- summary->shell_view_interface = Bonobo_Unknown_queryInterface (control_frame, "IDL:GNOME/Evolution/ShellView:1.0", &ev);
-
- if (BONOBO_EX (&ev)) {
- g_warning ("Error getting ShellView. %s", CORBA_exception_id (&ev));
- summary->shell_view_interface = CORBA_OBJECT_NIL;
- }
- CORBA_exception_free (&ev);
- }
- out:
-
- if (activate)
- control_activate (control, ui_component, summary);
- else
- control_deactivate (control, ui_component, summary);
-}
-
-static void
-control_destroy_cb (BonoboControl *control,
- ESummary *summary)
-{
- gtk_object_destroy (GTK_OBJECT (summary));
-}
-
-BonoboControl *
-e_summary_factory_new_control (const char *uri,
- const GNOME_Evolution_Shell shell,
- ESummaryOfflineHandler *handler,
- ESummaryPrefs *global_preferences)
-{
- BonoboControl *control;
- GtkWidget *summary;
-
- summary = e_summary_new (shell, global_preferences);
- if (summary == NULL) {
- return NULL;
- }
-
- e_summary_offline_handler_add_summary (handler, E_SUMMARY (summary));
- gtk_widget_show (summary);
-
- control = bonobo_control_new (summary);
-
- if (control == NULL) {
- gtk_object_destroy (GTK_OBJECT (summary));
- return NULL;
- }
-
- gtk_signal_connect (GTK_OBJECT (control), "activate",
- control_activate_cb, summary);
- gtk_signal_connect (GTK_OBJECT (control), "destroy",
- control_destroy_cb, summary);
-
- /* FIXME: We register the factory here as it needs the summary object.
- Sigh, this is really wrong. */
-
- return control;
-}
diff --git a/my-evolution/e-summary-factory.h b/my-evolution/e-summary-factory.h
deleted file mode 100644
index f159d55f0d..0000000000
--- a/my-evolution/e-summary-factory.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-summary-factory.h
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Iain Holmes <iain@ximian.com>
- */
-
-#ifndef __E_SUMMARY_FACTORY_H__
-#define __E_SUMMARY_FACTORY_H__
-
-#include "e-summary-offline-handler.h"
-#include "e-summary.h"
-
-BonoboControl *e_summary_factory_new_control (const char *uri,
- const GNOME_Evolution_Shell shell,
- ESummaryOfflineHandler *handler,
- ESummaryPrefs *preferences);
-
-#endif
diff --git a/my-evolution/e-summary-mail.c b/my-evolution/e-summary-mail.c
deleted file mode 100644
index 92a264df90..0000000000
--- a/my-evolution/e-summary-mail.c
+++ /dev/null
@@ -1,926 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-summary-mail.c
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Iain Holmes <iain@ximian.com>
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <liboaf/liboaf.h>
-#include <gal/widgets/e-unicode.h>
-
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-i18n.h>
-#include <libgnome/gnome-util.h> /* gnome_util_prepend_user_home */
-#include <gtk/gtksignal.h>
-#include <bonobo/bonobo-exception.h>
-#include <bonobo/bonobo-listener.h>
-#include <bonobo/bonobo-property-bag-client.h>
-
-#include <Evolution.h>
-#include <evolution-storage-listener.h>
-
-#include "Mail.h"
-#include "e-summary.h"
-#include "e-summary-mail.h"
-#include "e-summary-table.h"
-#include "e-summary-preferences.h"
-
-#include "e-util/e-path.h"
-
-#define MAIL_IID "OAFIID:GNOME_Evolution_FolderInfo"
-
-typedef struct _FolderStore {
- GNOME_Evolution_Shell shell;
- GNOME_Evolution_FolderInfo folder_info;
- GNOME_Evolution_StorageRegistry registry;
- BonoboListener *listener;
- EvolutionStorageListener *storage_listener;
-
- GSList *storage_list;
- GHashTable *folders;
-
- GList *shown;
-} FolderStore;
-
-struct _ESummaryMail {
-#if 0
- GNOME_Evolution_FolderInfo folder_info;
- GNOME_Evolution_StorageRegistry registry;
- BonoboListener *listener;
- EvolutionStorageListener *storage_listener;
-
- GSList *storage_list;
-
- GHashTable *folders;
- GList *shown;
- ESummaryMailMode mode;
-#endif
- char *html;
-};
-
-typedef struct _StorageInfo {
- char *name;
- char *toplevel;
-
- GNOME_Evolution_Storage storage;
- EvolutionStorageListener *listener;
-/* ESummary *summary; */
- GList *folders;
-} StorageInfo;
-
-typedef struct _ESummaryMailFolder {
- char *name;
- char *path;
- char *uri;
-
- int count;
- int unread;
-
- gboolean init; /* Has this folder been initialised? */
- StorageInfo *si;
-} ESummaryMailFolder;
-
-static FolderStore *folder_store = NULL;
-
-/* Work out what to do with folder names */
-static char *
-make_pretty_foldername (ESummary *summary,
- const char *foldername)
-{
- char *pretty;
-
- if (summary->preferences->show_full_path == FALSE) {
- if ((pretty = strrchr (foldername, '/'))) {
- return g_strdup (pretty + 1);
- } else {
- return g_strdup (foldername);
- }
- } else {
- return g_strdup (foldername);
- }
-}
-
-static void
-folder_gen_html (ESummary *summary,
- ESummaryMailFolder *folder,
- GString *string)
-{
- char *str, *pretty_name;
-
- pretty_name = make_pretty_foldername (summary, folder->name);
- str = g_strdup_printf ("<tr><td><a href=\"%s\"><pre>%s</pre></a></td><td align=\"Left\"><pre>%d/%d</pre></td></tr>",
- folder->uri, pretty_name, folder->unread, folder->count);
- g_print ("%s\n", folder->uri);
- g_string_append (string, str);
- g_free (pretty_name);
- g_free (str);
-}
-
-static void
-e_summary_mail_generate_html (ESummary *summary)
-{
- ESummaryMail *mail;
- GString *string;
- GList *p;
- char *s, *old;
-
- g_return_if_fail (summary != NULL);
- g_return_if_fail (IS_E_SUMMARY (summary));
-
- mail = summary->mail;
- string = g_string_new ("<dl><dt><img src=\"myevo-mail-summary.png\" "
- "align=\"middle\" alt=\"\" width=\"48\" "
- "height=\"48\"> <b><a href=\"evolution:/local/Inbox\">");
- s = e_utf8_from_locale_string (_("Mail summary"));
- g_string_append (string, s);
- g_free (s);
- g_string_append (string, "</a></b></dt><dd><table numcols=\"2\" width=\"100%\">");
-
- for (p = folder_store->shown; p; p = p->next) {
- ESummaryMailFolder *mail_folder = p->data;
- if (mail_folder->unread > 0) {
- folder_gen_html (summary, p->data, string);
- }
- }
-
- g_string_append (string, "</table></dd></dl>");
-
- old = mail->html;
- mail->html = string->str;
-
- g_free (old);
-
- g_string_free (string, FALSE);
-}
-
-const char *
-e_summary_mail_get_html (ESummary *summary)
-{
- /* Only regenerate HTML when it's needed */
- e_summary_mail_generate_html (summary);
-
- if (summary->mail == NULL) {
- return NULL;
- }
-
- return summary->mail->html;
-}
-
-static void
-e_summary_mail_get_info (const char *uri,
- BonoboListener *listener)
-{
- Bonobo_Listener corba_listener;
- CORBA_Environment ev;
-
- g_return_if_fail (folder_store->folder_info != CORBA_OBJECT_NIL);
-
- corba_listener = bonobo_object_corba_objref (BONOBO_OBJECT (listener));
- CORBA_exception_init (&ev);
- GNOME_Evolution_FolderInfo_getInfo (folder_store->folder_info, uri ? uri : "",
- corba_listener, &ev);
- if (BONOBO_EX (&ev)) {
- g_warning ("Error getting info for %s:\n%s", uri,
- CORBA_exception_id (&ev));
- CORBA_exception_free (&ev);
- return;
- }
-
- CORBA_exception_free (&ev);
- return;
-}
-
-static void
-new_folder_cb (EvolutionStorageListener *listener,
- const char *path,
- const GNOME_Evolution_Folder *folder,
- StorageInfo *si)
-{
- ESummaryPrefs *global_preferences;
- ESummaryMailFolder *mail_folder;
- GList *p;
-
- if (strcmp (folder->type, "mail") != 0) {
- return;
- }
-
- mail_folder = g_new (ESummaryMailFolder, 1);
- mail_folder->si = si;
- mail_folder->path = g_strdup (folder->physicalUri);
- mail_folder->uri = g_strdup (folder->evolutionUri);
- mail_folder->name = g_strdup (path);
- mail_folder->count = -1;
- mail_folder->unread = -1;
- mail_folder->init = FALSE;
-
- g_hash_table_insert (folder_store->folders, mail_folder->path, mail_folder);
- si->folders = g_list_prepend (si->folders, mail_folder);
-
- global_preferences = e_summary_preferences_get_global ();
- for (p = global_preferences->display_folders; p; p = p->next) {
- if (strcmp (p->data, folder->physicalUri) == 0) {
-/* g_print ("Showing: %s\n", folder->physicalUri); */
- folder_store->shown = g_list_append (folder_store->shown, mail_folder);
- e_summary_mail_get_info (mail_folder->path,
- folder_store->listener);
- }
- }
-}
-
-static void
-update_folder_cb (EvolutionStorageListener *listener,
- const char *path,
- int unread_count,
- StorageInfo *si)
-{
- char *evolution_dir;
- char *proto;
- char *uri;
-
- /* Make this static, saves having to recompute it each time */
- if (strcmp (si->name, _("VFolders")) == 0) {
- evolution_dir = gnome_util_prepend_user_home ("evolution/vfolder");
- uri = g_strdup_printf ("vfolder:%s#%s", evolution_dir,
- path + 1);
- g_free (evolution_dir);
- } else if (strcmp (si->name, _("Local Folders")) == 0) {
- evolution_dir = gnome_util_prepend_user_home ("evolution/local");
- proto = g_strconcat ("file://", evolution_dir, NULL);
- g_free (evolution_dir);
- uri = e_path_to_physical (proto, path);
- } else {
- uri = g_strconcat (si->name, path, NULL);
- }
-
- g_print ("path: %s\n", path);
- g_print ("uri: %s\n", uri);
- e_summary_mail_get_info (uri, folder_store->listener);
-
- g_free (uri);
-}
-
-static void
-remove_folder_cb (EvolutionStorageListener *listener,
- const char *path,
- StorageInfo *si)
-{
- ESummaryMailFolder *mail_folder;
- GList *p;
-
- mail_folder = g_hash_table_lookup (folder_store->folders, path);
- if (mail_folder == NULL) {
- return;
- }
-
- /* Check if we're displaying it, because we can't display it if it
- doesn't exist :) */
- for (p = folder_store->shown; p; p = p->next) {
- if (p->data == mail_folder) {
- folder_store->shown = g_list_remove_link (folder_store->shown, p);
- g_list_free (p);
- }
- }
-
- g_hash_table_remove (folder_store->folders, path);
- g_free (mail_folder->name);
- g_free (mail_folder->path);
- g_free (mail_folder->uri);
- g_free (mail_folder);
-}
-
-static void
-mail_change_notify (BonoboListener *listener,
- const char *name,
- const BonoboArg *arg,
- CORBA_Environment *ev,
- gpointer data)
-{
- GNOME_Evolution_FolderInfo_MessageCount *count;
- ESummaryMailFolder *folder;
- ESummaryPrefs *global_preferences;
- GList *p;
-
- count = arg->_value;
- folder = g_hash_table_lookup (folder_store->folders, count->path);
-
- if (folder == NULL) {
- return;
- }
-
- folder->count = count->count;
- folder->unread = count->unread;
- folder->init = TRUE;
-
- /* Are we displaying this folder? */
- global_preferences = e_summary_preferences_get_global ();
- for (p = global_preferences->display_folders; p; p = p->next) {
- g_print ("folder: %s\n", folder->path);
- if (strcmp (p->data, folder->path) == 0) {
- g_print ("Received info for shown folder %s\n", folder->path);
- e_summary_redraw_all (); /* All summaries should be redrawn, not just this one */
- return;
- }
- }
-}
-
-static void
-e_summary_mail_protocol (ESummary *summary,
- const char *uri,
- void *closure)
-{
-}
-
-
-
-static gboolean
-e_summary_folder_register_storage (const char *name,
- GNOME_Evolution_Storage corba_storage)
-{
- GNOME_Evolution_StorageListener corba_listener;
- StorageInfo *si;
- CORBA_Environment ev;
-
- si = g_new (StorageInfo, 1);
- si->name = g_strdup (name);
- si->toplevel = NULL;
- si->storage = corba_storage;
- si->listener = evolution_storage_listener_new ();
- si->folders = NULL;
-
- folder_store->storage_list = g_slist_prepend (folder_store->storage_list, si);
-
- gtk_signal_connect (GTK_OBJECT (si->listener), "new-folder",
- GTK_SIGNAL_FUNC (new_folder_cb), si);
- gtk_signal_connect (GTK_OBJECT (si->listener), "removed-folder",
- GTK_SIGNAL_FUNC (remove_folder_cb), si);
- gtk_signal_connect (GTK_OBJECT (si->listener), "update_folder",
- GTK_SIGNAL_FUNC (update_folder_cb), si);
-
- corba_listener = evolution_storage_listener_corba_objref (si->listener);
-
- CORBA_exception_init (&ev);
- GNOME_Evolution_Storage_addListener (corba_storage, corba_listener, &ev);
- if (BONOBO_EX (&ev)) {
- g_warning ("Exception adding listener: %s",
- CORBA_exception_id (&ev));
- CORBA_exception_free (&ev);
-
- return FALSE;
- }
-
- CORBA_exception_free (&ev);
-
- return TRUE;
-}
-
-static void
-e_summary_folder_register_local_storage (void)
-{
- GNOME_Evolution_Storage local_storage;
- CORBA_Environment ev;
-
- CORBA_exception_init (&ev);
- local_storage = GNOME_Evolution_Shell_getLocalStorage (folder_store->shell, &ev);
- if (BONOBO_EX (&ev) || local_storage == CORBA_OBJECT_NIL) {
- g_warning ("Error getting local storage: %s", CORBA_exception_id (&ev));
- CORBA_exception_free (&ev);
- return;
- }
- CORBA_exception_free (&ev);
-
- e_summary_folder_register_storage (_("Local Folders"), local_storage);
-}
-
-static void
-storage_notify (BonoboListener *listener,
- const char *name,
- const BonoboArg *arg,
- CORBA_Environment *ev,
- gpointer data)
-{
- GNOME_Evolution_StorageRegistry_NotifyResult *nr;
- GNOME_Evolution_Storage corba_storage;
- CORBA_Environment ev2;
-
- nr = arg->_value;
-
- switch (nr->type) {
- case GNOME_Evolution_StorageRegistry_STORAGE_CREATED:
- /* These need to be special cased because they're special */
- if (strcmp (nr->name, "summary") == 0) {
- break;
- }
-
- if (strcmp (nr->name, "local") == 0) {
- e_summary_folder_register_local_storage ();
- break;
- }
-
- CORBA_exception_init (&ev2);
- corba_storage = GNOME_Evolution_StorageRegistry_getStorageByName (folder_store->registry,
- nr->name, &ev2);
- if (BONOBO_EX (&ev2) || corba_storage == CORBA_OBJECT_NIL) {
- g_warning ("Error getting storage %s\n%s", nr->name,
- CORBA_exception_id (&ev2));
- CORBA_exception_free (&ev2);
- return;
- }
-
- CORBA_exception_free (&ev2);
- e_summary_folder_register_storage (nr->name, corba_storage);
- break;
-
- case GNOME_Evolution_StorageRegistry_STORAGE_DESTROYED:
- g_print ("%s removed\n", nr->name);
- break;
-
- default:
- g_print ("Unknown response %d\n", nr->type);
- break;
- }
-}
-
-static gboolean
-e_summary_folder_register_storages (GNOME_Evolution_Shell corba_shell)
-{
- Bonobo_Listener corba_listener;
- BonoboListener *listener;
- CORBA_Environment ev;
-
- CORBA_exception_init (&ev);
-
- folder_store->registry = Bonobo_Unknown_queryInterface (corba_shell,
- "IDL:GNOME/Evolution/StorageRegistry:1.0",
- &ev);
- if (BONOBO_EX (&ev) || folder_store->registry == NULL) {
- g_warning ("No storage registry: %s", CORBA_exception_id (&ev));
- CORBA_exception_free (&ev);
- return FALSE;
- }
-
- listener = bonobo_listener_new (NULL, NULL);
- gtk_signal_connect (GTK_OBJECT (listener), "event-notify",
- GTK_SIGNAL_FUNC (storage_notify), NULL);
- corba_listener = bonobo_object_corba_objref (BONOBO_OBJECT (listener));
-
- /* Storages will be added whenever the listener gets an event. */
- GNOME_Evolution_StorageRegistry_addListener (folder_store->registry, corba_listener, &ev);
- if (BONOBO_EX (&ev)) {
- g_warning ("Cannot add listener\n%s", CORBA_exception_id (&ev));
- CORBA_exception_free (&ev);
- return FALSE;
- }
-
- CORBA_exception_free (&ev);
- return TRUE;
-}
-
-void
-e_summary_mail_init (ESummary *summary)
-{
- ESummaryMail *mail;
-
- g_return_if_fail (summary != NULL);
- g_return_if_fail (IS_E_SUMMARY (summary));
-
- g_return_if_fail (folder_store != NULL);
-
- mail = g_new0 (ESummaryMail, 1);
- summary->mail = mail;
-
- mail->html = NULL;
-
- e_summary_add_protocol_listener (summary, "mail", e_summary_mail_protocol, mail);
- return;
-}
-
-void
-e_summary_mail_reconfigure (void)
-{
- ESummaryPrefs *preferences;
- GList *old, *p;
-
- old = folder_store->shown;
- folder_store->shown = NULL;
-
- preferences = e_summary_preferences_get_global ();
- for (p = g_list_last (preferences->display_folders); p; p = p->prev) {
- ESummaryMailFolder *folder;
- char *uri;
-
-#if 0
- if (strncmp (p->data, "file://", 7) == 0 ||
- strncmp (p->data, "vfolder:", 8) == 0) {
- uri = g_strdup (p->data);
- } else {
- uri = g_strconcat ("file://", p->data, NULL);
- }
-#endif
- uri = g_strdup (p->data);
- folder = g_hash_table_lookup (folder_store->folders, uri);
- if (folder != NULL) {
- if (folder->init == FALSE) {
- e_summary_mail_get_info (folder->path,
- folder_store->listener);
- }
- folder_store->shown = g_list_append (folder_store->shown, folder);
- }
-
- g_free (uri);
- }
-
- /* Free the old list */
- g_list_free (old);
-
-/* e_summary_redraw_all (); */
-}
-
-static int
-str_compare (gconstpointer a,
- gconstpointer b)
-{
- ESummaryMailFolder *folder_a, *folder_b;
-
- folder_a = (ESummaryMailFolder *) a;
- folder_b = (ESummaryMailFolder *) b;
- return strcasecmp (folder_a->name, folder_b->name);
-}
-
-static int
-sort_storages (gconstpointer a,
- gconstpointer b)
-{
- StorageInfo *si_a, *si_b;
-
- si_a = (StorageInfo *) a;
- si_b = (StorageInfo *) b;
-
- return strcasecmp (si_a->name, si_b->name);
-}
-
-static char *
-get_parent_path (const char *path)
-{
- char *last;
-
- if (strncmp (path, "vfolder", 7) == 0) {
- last = strrchr (path, '#');
- if (last == NULL) {
- return g_strdup (path);
- }
- return g_strndup (path, last - path);
- } else {
- last = strrchr (path, '/');
- return g_strndup (path, last - path);
- }
-}
-
-static gboolean
-is_folder_shown (const char *path)
-{
- GList *p;
-
- for (p = folder_store->shown; p; p = p->next) {
- ESummaryMailFolder *folder = p->data;
- if (strcmp (folder->path, path) == 0) {
- return TRUE;
- }
- }
-
- return FALSE;
-}
-
-static ETreePath
-insert_path_recur (ESummaryTable *est,
- StorageInfo *si,
- GHashTable *hash_table,
- const char *path)
-{
- char *parent_path, *name;
- ETreePath parent_node, node;
- ESummaryTableModelEntry *entry;
- int children;
-
- parent_path = get_parent_path (path);
-
- parent_node = g_hash_table_lookup (hash_table, parent_path);
- if (parent_node == NULL) {
- if (si->toplevel == NULL) {
- char *third_slash;
- /* Generate the toplevel from the path */
-
- if (strncmp (path, "imap://", 7) == 0) {
- /* IMAP */
- third_slash = strchr (path + 8, '/');
- if (third_slash == NULL) {
- /* EEk */
- si->toplevel = g_strdup (path + 8);
- } else {
- si->toplevel = g_strndup (path, third_slash - path);
- }
- } else {
- /* FIXME: Not sure I like this, but... */
- si->toplevel = g_strdup (path);
- }
-
- g_print ("Generated toplevel as %s\n", si->toplevel);
- }
-
- if (strcmp (si->toplevel, path) == 0) {
- /* Insert root */
- children = e_summary_table_get_num_children (est, NULL);
- node = e_summary_table_add_node (est, NULL, children, NULL);
- entry = g_new (ESummaryTableModelEntry, 1);
- entry->path = node;
- entry->location = NULL;
- entry->name = g_strdup (si->name);
- entry->editable = FALSE;
- entry->removable = FALSE;
- entry->shown = FALSE;
-
- g_hash_table_insert (est->model, entry->path, entry);
- g_hash_table_insert (hash_table, g_strdup (path), node);
- return node;
- } else {
- parent_node = insert_path_recur (est, si, hash_table, parent_path);
- }
- }
-
- g_free (parent_path);
- if (strcmp (si->name, "VFolders") == 0) {
- name = strrchr (path, '#');
- } else {
- name = strrchr (path, '/');
- }
-
- /* Leave out folders called "subfolder" */
- if (strcmp (name + 1, "subfolders") == 0) {
- return parent_node;
- }
-
- children = e_summary_table_get_num_children (est, parent_node);
- node = e_summary_table_add_node (est, parent_node, children, NULL);
- entry = g_new (ESummaryTableModelEntry, 1);
- entry->path = node;
- entry->location = g_strdup (path);
- entry->name = g_strdup (name + 1);
- entry->editable = TRUE;
- entry->removable = FALSE;
-
- /* Check if shown */
- entry->shown = is_folder_shown (path);
- g_hash_table_insert (est->model, entry->path, entry);
- g_hash_table_insert (hash_table, g_strdup (path), node);
-
- return node;
-}
-
-static void
-free_path_hash (gpointer key,
- gpointer value,
- gpointer data)
-{
- g_free (key);
-}
-
-static void
-add_storage_to_table (ESummaryTable *est,
- StorageInfo *si)
-{
- GHashTable *path_hash;
- GList *p;
-
- path_hash = g_hash_table_new (g_str_hash, g_str_equal);
- si->folders = g_list_sort (si->folders, str_compare);
-
- g_print ("Adding %s\n", si->name);
- for (p = si->folders; p; p = p->next) {
- ESummaryMailFolder *folder = p->data;
-
- g_print ("folder->path: %s\n", folder->path);
- insert_path_recur (est, si, path_hash, folder->path);
- }
-
- g_hash_table_foreach (path_hash, free_path_hash, NULL);
- g_hash_table_destroy (path_hash);
-}
-
-static void
-make_toplevel (StorageInfo *si)
-{
- if (si->toplevel != NULL) {
- return;
- }
-
- if (strcmp (si->name, _("VFolders")) == 0) {
- si->toplevel = g_strdup_printf ("vfolder:%s/evolution/vfolder",
- g_get_home_dir ());
- } else if (strcmp (si->name, _("Local Folders")) == 0) {
- si->toplevel = g_strdup_printf ("file://%s/evolution/local",
- g_get_home_dir ());
- } else {
- si->toplevel = NULL;
- }
-}
-
-void
-e_summary_mail_fill_list (ESummaryTable *est)
-{
- GSList *p;
-
- g_return_if_fail (IS_E_SUMMARY_TABLE (est));
-
- g_return_if_fail (folder_store != NULL);
-
- folder_store->storage_list = g_slist_sort (folder_store->storage_list,
- sort_storages);
- for (p = folder_store->storage_list; p; p = p->next) {
- StorageInfo *si = p->data;
-
- if (si->toplevel == NULL) {
- make_toplevel (si);
- }
-
- add_storage_to_table (est, si);
- }
-}
-
-const char *
-e_summary_mail_uri_to_name (const char *uri)
-{
- ESummaryMailFolder *folder;
-
- folder = g_hash_table_lookup (folder_store->folders, uri);
- if (folder == NULL) {
- return NULL;
- } else {
- return folder->name;
- }
-}
-
-#if 0
-static void
-free_folder (gpointer key,
- gpointer value,
- gpointer data)
-{
- ESummaryMailFolder *folder = value;
-
- g_free (folder->name);
- g_free (folder->path);
- g_free (folder->uri);
- g_free (folder);
-}
-#endif
-
-void
-e_summary_mail_free (ESummary *summary)
-{
- ESummaryMail *mail;
-
- g_return_if_fail (summary != NULL);
- g_return_if_fail (IS_E_SUMMARY (summary));
-
- mail = summary->mail;
-
-#if 0
- g_hash_table_foreach (mail->folders, free_folder, NULL);
- g_hash_table_destroy (mail->folders);
-#endif
- g_free (mail->html);
-
-#if 0
- gtk_signal_disconnect_by_func (GTK_OBJECT (mail->storage_listener),
- GTK_SIGNAL_FUNC (new_folder_cb), summary);
- gtk_signal_disconnect_by_func (GTK_OBJECT (mail->storage_listener),
- GTK_SIGNAL_FUNC (remove_folder_cb), summary);
- gtk_signal_disconnect_by_func (GTK_OBJECT (mail->storage_listener),
- GTK_SIGNAL_FUNC (update_folder_cb), summary);
-#endif
-
- g_free (mail);
- summary->mail = NULL;
-}
-
-static void
-folder_info_pb_changed (BonoboListener *listener,
- const char *name,
- const BonoboArg *arg,
- CORBA_Environment *ev,
- gpointer data)
-{
- g_print ("Changed: %s\n", name);
- e_summary_folder_register_storages (folder_store->shell);
-}
-
-static void
-lazy_register_storages (void)
-{
- Bonobo_PropertyBag pb;
- Bonobo_EventSource event;
- BonoboListener *listener;
- Bonobo_Listener corba_listener;
- CORBA_Environment ev;
- gboolean ready;
-
- /* Get the PropertyBag */
- CORBA_exception_init (&ev);
- pb = Bonobo_Unknown_queryInterface (folder_store->folder_info,
- "IDL:Bonobo/PropertyBag:1.0", &ev);
- if (BONOBO_EX (&ev)) {
- g_warning ("Error getting propertybag interface: %s",
- CORBA_exception_id (&ev));
- CORBA_exception_free (&ev);
- return;
- }
-
- /* Check the initial value */
- ready = bonobo_property_bag_client_get_value_gboolean (pb,
- "folder-info-ready",
- NULL);
- if (ready == TRUE) {
- g_print ("We're ready\n");
- /* Register storages */
- e_summary_folder_register_storages (folder_store->shell);
- return;
- }
-
- /* Get thh event source for the bag */
- event = Bonobo_Unknown_queryInterface (pb,
- "IDL:Bonobo/EventSource:1.0", &ev);
- if (BONOBO_EX (&ev)) {
- g_warning ("Error getting event source interface: %s",
- CORBA_exception_id (&ev));
- CORBA_exception_free (&ev);
- return;
- }
-
- /* Connect a listener to it */
- listener = bonobo_listener_new (NULL, NULL);
- gtk_signal_connect (GTK_OBJECT (listener), "event-notify",
- GTK_SIGNAL_FUNC (folder_info_pb_changed), NULL);
-
- corba_listener = bonobo_object_corba_objref (BONOBO_OBJECT (listener));
- Bonobo_EventSource_addListener (event, corba_listener, &ev);
- if (BONOBO_EX (&ev)) {
- g_warning ("Error adding listener: %s\n",
- CORBA_exception_id (&ev));
- CORBA_exception_free (&ev);
- bonobo_object_unref (BONOBO_OBJECT (listener));
- return;
- }
-
- g_print ("Ready\n");
-}
-
-gboolean
-e_summary_folder_init_folder_store (GNOME_Evolution_Shell shell)
-{
- CORBA_Environment ev;
-
- if (folder_store != NULL) {
- return TRUE;
- }
-
- folder_store = g_new0 (FolderStore, 1);
- folder_store->shell = shell;
-
- CORBA_exception_init (&ev);
- folder_store->folder_info = oaf_activate_from_id (MAIL_IID, 0, NULL, &ev);
- if (BONOBO_EX (&ev) || folder_store->folder_info == NULL) {
- g_warning ("Exception creating folderinfo: %s\n",
- CORBA_exception_id (&ev) ? CORBA_exception_id (&ev) : "(null)");
- CORBA_exception_free (&ev);
- return FALSE;
- }
-
- CORBA_exception_free (&ev);
- folder_store->listener = bonobo_listener_new (NULL, NULL);
- gtk_signal_connect (GTK_OBJECT (folder_store->listener), "event-notify",
- GTK_SIGNAL_FUNC (mail_change_notify), NULL);
-
- /* Create a hash table for the folders */
- folder_store->folders = g_hash_table_new (g_str_hash, g_str_equal);
-
- /* Wait for the mailer to tell us we're ready to register */
- lazy_register_storages ();
- return TRUE;
-}
diff --git a/my-evolution/e-summary-mail.h b/my-evolution/e-summary-mail.h
deleted file mode 100644
index e6b84a16f3..0000000000
--- a/my-evolution/e-summary-mail.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-summary-mail.h
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Iain Holmes <iain@ximian.com>
- */
-
-#ifndef __E_SUMMARY_MAIL_H__
-#define __E_SUMMARY_MAIL_H__
-
-#include <Evolution.h>
-
-#include "e-summary-type.h"
-#include "e-summary-table.h"
-
-typedef enum _ESummaryMailMode ESummaryMailMode;
-enum _ESummaryMailMode {
- E_SUMMARY_MAIL_MODE_ONLY,
- E_SUMMARY_MAIL_MODE_EXCLUDING
-};
-
-typedef struct _ESummaryMailRowData ESummaryMailRowData;
-typedef struct _ESummaryMail ESummaryMail;
-
-struct _ESummaryMailRowData {
- char *name;
- char *uri;
-};
-
-const char *e_summary_mail_get_html (ESummary *summary);
-void e_summary_mail_init (ESummary *summary);
-void e_summary_mail_reconfigure (void);
-void e_summary_mail_free (ESummary *summary);
-const char *e_summary_mail_uri_to_name (const char *uri);
-void e_summary_mail_fill_list (ESummaryTable *est);
-
-/* Folder stuff */
-gboolean e_summary_folder_init_folder_store (GNOME_Evolution_Shell shell);
-#endif
diff --git a/my-evolution/e-summary-offline-handler.c b/my-evolution/e-summary-offline-handler.c
deleted file mode 100644
index a9163b578e..0000000000
--- a/my-evolution/e-summary-offline-handler.c
+++ /dev/null
@@ -1,292 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-summary-offline-handler.c
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Authors:
- * Ettore Perazzoli <ettore@ximian.com>
- * Dan Winship <danw@ximian.com>
- * Iain Holmes <iain@ximian.com>
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "e-summary-offline-handler.h"
-#include "e-summary.h"
-
-#include <bonobo/bonobo-exception.h>
-#include <gtk/gtkmain.h>
-#include <gal/util/e-util.h>
-
-#define PARENT_TYPE bonobo_x_object_get_type ()
-static BonoboXObjectClass *parent_class = NULL;
-
-struct _ESummaryOfflineHandlerPriv {
- GSList *summaries;
- GNOME_Evolution_OfflineProgressListener listener_interface;
-};
-
-/* ::destroy handler for the bookkeeping of the list of summary views. */
-
-static void
-summary_destroy_callback (GtkObject *object,
- void *data)
-{
- ESummaryOfflineHandler *offline_handler;
- ESummaryOfflineHandlerPriv *priv;
- ESummary *summary;
-
- summary = E_SUMMARY (object);
- offline_handler = E_SUMMARY_OFFLINE_HANDLER (data);
- priv = offline_handler->priv;
-
- priv->summaries = g_slist_remove (priv->summaries, summary);
-}
-
-static GNOME_Evolution_ConnectionList *
-create_connection_list (GSList *summaries)
-{
- GNOME_Evolution_ConnectionList *list;
- GList *connections, *p;
- GSList *sp;
-
- list = GNOME_Evolution_ConnectionList__alloc ();
- list->_length = 0;
- list->_maximum = 0;
-
- /* Count the total number of connections first to make CORBA happy. */
- for (sp = summaries; sp != NULL; sp = sp->next)
- list->_maximum += e_summary_count_connections (E_SUMMARY (sp->data));
-
- list->_buffer = CORBA_sequence_GNOME_Evolution_Connection_allocbuf (list->_maximum);
-
- for (sp = summaries; sp != NULL; sp = sp->next) {
- ESummary *summary;
-
- summary = E_SUMMARY (sp->data);
- connections = e_summary_add_connections (summary);
- for (p = connections; p != NULL; p = p->next) {
- ESummaryConnectionData *data;
-
- data = p->data;
- list->_buffer[list->_length].hostName = CORBA_string_dup (data->hostname);
- list->_buffer[list->_length].type = CORBA_string_dup (data->type);
- list->_length++;
-
- g_free (data->hostname);
- g_free (data->type);
- g_free (data);
- }
- g_list_free (connections);
- }
-
- return list;
-}
-
-/* GNOME::Evolution::Offline methods. */
-static CORBA_boolean
-impl__get_isOffline (PortableServer_Servant servant,
- CORBA_Environment *ev)
-{
- ESummaryOfflineHandler *offline_handler;
- GSList *sp;
-
- offline_handler = E_SUMMARY_OFFLINE_HANDLER (bonobo_object_from_servant (servant));
-
- /* We are offline if all of the views are offline. */
- for (sp = offline_handler->priv->summaries; sp != NULL; sp = sp->next) {
- ESummary *summary;
-
- summary = E_SUMMARY (sp->data);
- if (summary->online)
- return FALSE;
- }
-
- return TRUE;
-}
-
-static void
-impl_prepareForOffline (PortableServer_Servant servant,
- GNOME_Evolution_ConnectionList **active_connection_list,
- CORBA_Environment *ev)
-{
- ESummaryOfflineHandler *offline_handler;
- ESummaryOfflineHandlerPriv *priv;
-
- offline_handler = E_SUMMARY_OFFLINE_HANDLER (bonobo_object_from_servant (servant));
- priv = offline_handler->priv;
-
- *active_connection_list = create_connection_list (priv->summaries);
-}
-
-static void
-went_offline (ESummary *summary,
- void *data)
-{
- ESummaryOfflineHandler *offline_handler = data;
- ESummaryOfflineHandlerPriv *priv;
- CORBA_Environment ev;
- GNOME_Evolution_ConnectionList *connection_list;
-
- g_return_if_fail (summary != NULL);
- g_return_if_fail (IS_E_SUMMARY (summary));
- g_return_if_fail (offline_handler != NULL);
-
- priv = offline_handler->priv;
- connection_list = create_connection_list (priv->summaries);
-
- CORBA_exception_init (&ev);
-
- g_warning ("Went offline");
- GNOME_Evolution_OfflineProgressListener_updateProgress (priv->listener_interface, connection_list, &ev);
- if (BONOBO_EX (&ev)) {
- g_warning ("Error updating offline progress: %s",
- CORBA_exception_id (&ev));
- }
-
- CORBA_exception_free (&ev);
-}
-
-static void
-impl_goOffline (PortableServer_Servant servant,
- const GNOME_Evolution_OfflineProgressListener progress_listener,
- CORBA_Environment *ev)
-{
- ESummaryOfflineHandler *offline_handler;
- ESummaryOfflineHandlerPriv *priv;
- GSList *sp;
-
- offline_handler = E_SUMMARY_OFFLINE_HANDLER (bonobo_object_from_servant (servant));
- priv = offline_handler->priv;
-
- /* FIXME: If we have a progress already, then something is wrong and we
- should raise an exception. */
- priv->listener_interface = CORBA_Object_duplicate (progress_listener, &ev);
-
- for (sp = priv->summaries; sp != NULL; sp = sp->next) {
- ESummary *summary;
-
- summary = E_SUMMARY (sp->data);
- e_summary_set_online (summary, CORBA_OBJECT_NIL, FALSE, went_offline, offline_handler);
- }
-}
-
-static void
-impl_goOnline (PortableServer_Servant servant,
- CORBA_Environment *ev)
-{
- ESummaryOfflineHandler *offline_handler;
- GSList *sp;
-
- offline_handler = E_SUMMARY_OFFLINE_HANDLER (bonobo_object_from_servant (servant));
-
- for (sp = offline_handler->priv->summaries; sp != NULL; sp = sp->next) {
- ESummary *summary;
-
- summary = E_SUMMARY (sp->data);
- e_summary_set_online (summary, CORBA_OBJECT_NIL, TRUE, NULL, NULL);
- }
-}
-
-/* GtkObject methods */
-static void
-impl_destroy (GtkObject *object)
-{
- ESummaryOfflineHandler *offline_handler;
- ESummaryOfflineHandlerPriv *priv;
-
- offline_handler = E_SUMMARY_OFFLINE_HANDLER (object);
- priv = offline_handler->priv;
-
- if (priv == NULL) {
- return;
- }
-
- if (priv->listener_interface != CORBA_OBJECT_NIL) {
- CORBA_Environment ev;
-
- CORBA_exception_init (&ev);
- CORBA_Object_release (priv->listener_interface, &ev);
- CORBA_exception_free (&ev);
- }
-
- g_slist_free (priv->summaries);
-
- offline_handler->priv = NULL;
- g_free (priv);
-
- if (GTK_OBJECT_CLASS (parent_class)->destroy != NULL) {
- GTK_OBJECT_CLASS (parent_class)->destroy (object);
- }
-}
-
-static void
-e_summary_offline_handler_class_init (ESummaryOfflineHandlerClass *klass)
-{
- GtkObjectClass *object_class;
- POA_GNOME_Evolution_Offline__epv *epv;
-
- object_class = GTK_OBJECT_CLASS (klass);
- object_class->destroy = impl_destroy;
-
- epv = &klass->epv;
- epv->_get_isOffline = impl__get_isOffline;
- epv->prepareForOffline = impl_prepareForOffline;
- epv->goOffline = impl_goOffline;
- epv->goOnline = impl_goOnline;
-
- parent_class = gtk_type_class (PARENT_TYPE);
-}
-
-static void
-e_summary_offline_handler_init (ESummaryOfflineHandler *offline_handler)
-{
- ESummaryOfflineHandlerPriv *priv;
-
- priv = g_new0 (ESummaryOfflineHandlerPriv, 1);
-
- offline_handler->priv = priv;
-}
-
-ESummaryOfflineHandler *
-e_summary_offline_handler_new (void)
-{
- ESummaryOfflineHandler *new;
-
- new = gtk_type_new (e_summary_offline_handler_get_type ());
-
- return new;
-}
-
-void
-e_summary_offline_handler_add_summary (ESummaryOfflineHandler *handler,
- ESummary *summary)
-{
- g_return_if_fail (handler != NULL);
- g_return_if_fail (summary != NULL);
- g_return_if_fail (IS_E_SUMMARY (summary));
-
- handler->priv->summaries = g_slist_prepend (handler->priv->summaries,
- summary);
-
- gtk_signal_connect (GTK_OBJECT (summary), "destroy",
- GTK_SIGNAL_FUNC (summary_destroy_callback), handler);
-}
-
-BONOBO_X_TYPE_FUNC_FULL (ESummaryOfflineHandler, GNOME_Evolution_Offline, PARENT_TYPE, e_summary_offline_handler);
diff --git a/my-evolution/e-summary-offline-handler.h b/my-evolution/e-summary-offline-handler.h
deleted file mode 100644
index 3e08de38bf..0000000000
--- a/my-evolution/e-summary-offline-handler.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-summary-offline-handler.h
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Authors:
- * Ettore Perazzoli <ettore@ximian.com>
- * Dan Winship <danw@ximian.com>
- * Iain Holmes <iain@ximian.com>
- */
-
-#ifndef __E_SUMMARY_OFFLINE_HANDLER_H__
-#define __E_SUMMARY_OFFLINE_HANDLER_H__
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <bonobo/bonobo-xobject.h>
-#include "e-summary.h"
-#include "Evolution.h"
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif
-
-#define E_SUMMARY_TYPE_OFFLINE_HANDLER (e_summary_offline_handler_get_type ())
-#define E_SUMMARY_OFFLINE_HANDLER(obj) (GTK_CHECK_CAST ((obj), E_SUMMARY_TYPE_OFFLINE_HANDLER, ESummaryOfflineHandler))
-#define E_SUMMARY_OFFLINE_HANDLER_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), E_SUMMARY_TYPE_OFFLINE_HANDLER, ESummaryOfflineHandlerClass))
-
-
-typedef struct _ESummaryOfflineHandler ESummaryOfflineHandler;
-typedef struct _ESummaryOfflineHandlerPriv ESummaryOfflineHandlerPriv;
-typedef struct _ESummaryOfflineHandlerClass ESummaryOfflineHandlerClass;
-
-struct _ESummaryOfflineHandler {
- BonoboXObject parent;
-
- ESummaryOfflineHandlerPriv *priv;
-};
-
-struct _ESummaryOfflineHandlerClass {
- BonoboXObjectClass parent_class;
-
- POA_GNOME_Evolution_Offline__epv epv;
-};
-
-
-GtkType e_summary_offline_handler_get_type (void);
-ESummaryOfflineHandler *e_summary_offline_handler_new (void);
-
-void e_summary_offline_handler_add_summary (ESummaryOfflineHandler *handler,
- ESummary *summary);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/my-evolution/e-summary-preferences.c b/my-evolution/e-summary-preferences.c
deleted file mode 100644
index 00bb7484ff..0000000000
--- a/my-evolution/e-summary-preferences.c
+++ /dev/null
@@ -1,1235 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-summary-preferences.c
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Iain Holmes
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <gtk/gtk.h>
-
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-util.h>
-#include <libgnome/gnome-i18n.h>
-#include <libgnome/gnome-config.h>
-
-#include <libgnomeui/gnome-propertybox.h>
-#include <libgnomeui/gnome-stock.h>
-
-#include <glade/glade.h>
-#include <stdio.h>
-
-#include <bonobo/bonobo-exception.h>
-#include <bonobo/bonobo-generic-factory.h>
-#include <bonobo/bonobo-moniker-util.h>
-#include <bonobo/bonobo-shlib-factory.h>
-
-#include <bonobo-conf/bonobo-config-database.h>
-
-#include "e-summary.h"
-#include "e-summary-preferences.h"
-#include "e-summary-table.h"
-#include "e-summary-shown.h"
-
-#include "evolution-config-control.h"
-
-#define FACTORY_ID "OAFIID:GNOME_Evolution_Summary_ConfigControlFactory"
-
-static ESummaryPrefs *global_preferences = NULL;
-
-static void
-make_initial_mail_list (ESummaryPrefs *prefs)
-{
- char *evolution_dir;
- GList *folders;
-
- evolution_dir = gnome_util_prepend_user_home ("evolution/local");
-
- folders = g_list_append (NULL, g_strconcat (evolution_dir, "/Inbox", NULL));
- folders = g_list_append (folders, g_strconcat (evolution_dir, "/Outbox", NULL));
-
- g_free (evolution_dir);
- prefs->display_folders = folders;
-}
-
-static void
-make_initial_rdf_list (ESummaryPrefs *prefs)
-{
- GList *rdfs;
-
- rdfs = g_list_prepend (NULL, g_strdup ("http://linuxtoday.com/backend/my-netscape.rdf"));
- rdfs = g_list_append (rdfs, g_strdup ("http://www.salon.com/feed/RDF/salon_use.rdf"));
-
- prefs->rdf_urls = rdfs;
-}
-
-static void
-make_initial_weather_list (ESummaryPrefs *prefs)
-{
- /* translators: Put a list of codes for locations you want to see in
- My Evolution by default here. You can find the list of all
- stations and their codes in Evolution sources.
- (evolution/my-evolution/Locations)
- Codes are seperated with : eg. "KBOS:EGAA"*/
- char *default_stations = _("KBOS"), **stations_v, **p;
- GList *stations = NULL;
-
- stations_v = g_strsplit (default_stations, ":", 0);
- g_assert (stations_v != NULL);
- for (p = stations_v; *p != NULL; p++) {
- stations = g_list_prepend (stations, *p);
- }
- g_free (stations_v);
-
- prefs->stations = g_list_reverse (stations);
-}
-
-/* Load the prefs off disk */
-
-static char *
-vector_from_str_list (GList *strlist)
-{
- char *vector;
- GString *str;
-
- if (strlist == NULL) {
- return g_strdup ("");
- }
-
- str = g_string_new ("");
- for (; strlist; strlist = strlist->next) {
- g_string_append (str, strlist->data);
-
- /* No space at end */
- if (strlist->next) {
- g_string_append (str, " !<-->! ");
- }
- }
-
- vector = str->str;
- g_string_free (str, FALSE);
-
- return vector;
-}
-
-static GList *
-str_list_from_vector (const char *vector)
-{
- GList *strlist = NULL;
- char **tokens, **t;
-
- t = tokens = g_strsplit (vector, " !<-->! ", 8196);
-
- if (tokens == NULL) {
- return NULL;
- }
-
- for (; *tokens; tokens++) {
- strlist = g_list_prepend (strlist, g_strdup (*tokens));
- }
-
- g_strfreev (t);
-
- strlist = g_list_reverse (strlist);
- return strlist;
-}
-
-gboolean
-e_summary_preferences_restore (ESummaryPrefs *prefs)
-{
- Bonobo_ConfigDatabase db;
- CORBA_Environment ev;
- char *vector;
-
- g_return_val_if_fail (prefs != NULL, FALSE);
-
- CORBA_exception_init (&ev);
- db = bonobo_get_object ("wombat:", "Bonobo/ConfigDatabase", &ev);
- if (BONOBO_EX (&ev) || db == CORBA_OBJECT_NIL) {
- g_warning ("Error getting Wombat. Using defaults");
- CORBA_exception_free (&ev);
- return FALSE;
- }
-
- CORBA_exception_free (&ev);
- vector = bonobo_config_get_string (db, "My-Evolution/Mail/display_folders", &ev);
- if (BONOBO_EX (&ev)) {
- g_warning ("Error getting Mail/display_folders");
- CORBA_exception_free (&ev);
- bonobo_object_release_unref (db, NULL);
- return FALSE;
- }
- prefs->display_folders = str_list_from_vector (vector);
- g_free (vector);
-
- prefs->show_full_path = bonobo_config_get_boolean (db, "My-Evolution/Mail/show_full_path", &ev);
- if (BONOBO_EX (&ev) || db == CORBA_OBJECT_NIL) {
- g_warning ("Error getting Mail/show_full_path. Using defaults");
- bonobo_object_release_unref (db, NULL);
- CORBA_exception_free (&ev);
- return FALSE;
- }
-
-
- vector = bonobo_config_get_string (db, "My-Evolution/RDF/rdf_urls", &ev);
- if (BONOBO_EX (&ev)) {
- g_warning ("Error getting RDF/rdf_urls");
- CORBA_exception_free (&ev);
- bonobo_object_release_unref (db, NULL);
- return FALSE;
- }
- prefs->rdf_urls = str_list_from_vector (vector);
- g_free (vector);
-
- prefs->rdf_refresh_time = bonobo_config_get_long_with_default (db, "My-Evolution/RDF/rdf_refresh_time", 600, NULL);
-
- prefs->limit = bonobo_config_get_long_with_default (db, "My-Evolution/RDF/limit", 10, NULL);
-
- vector = bonobo_config_get_string (db, "My-Evolution/Weather/stations", &ev);
- if (BONOBO_EX (&ev)) {
- g_warning ("Error getting Weather/stations");
- CORBA_exception_free (&ev);
- bonobo_object_release_unref (db, NULL);
- return FALSE;
- }
- prefs->stations = str_list_from_vector (vector);
- g_free (vector);
-
- prefs->units = bonobo_config_get_long (db, "My-Evolution/Weather/units", &ev);
- if (BONOBO_EX (&ev) || db == CORBA_OBJECT_NIL) {
- g_warning ("Error getting Weather/units. Using defaults");
- bonobo_object_release_unref (db, NULL);
- CORBA_exception_free (&ev);
- return FALSE;
- }
-
- prefs->weather_refresh_time = bonobo_config_get_long (db, "My-Evolution/Weather/weather_refresh_time", &ev);
- if (BONOBO_EX (&ev) || db == CORBA_OBJECT_NIL) {
- g_warning ("Error getting Weather/weather_refresh_time. Using defaults");
- bonobo_object_release_unref (db, NULL);
- CORBA_exception_free (&ev);
- return FALSE;
- }
-
-
- prefs->days = bonobo_config_get_long (db, "My-Evolution/Schedule/days", &ev);
- if (BONOBO_EX (&ev) || db == CORBA_OBJECT_NIL) {
- g_warning ("Error getting Schedule/days. Using defaults");
- bonobo_object_release_unref (db, NULL);
- CORBA_exception_free (&ev);
- return FALSE;
- }
-
- prefs->show_tasks = bonobo_config_get_long (db, "My-Evolution/Schedule/show_tasks", &ev);
- if (BONOBO_EX (&ev) || db == CORBA_OBJECT_NIL) {
- g_warning ("Error getting Schedule/show_tasks. Using defaults");
- bonobo_object_release_unref (db, NULL);
- CORBA_exception_free (&ev);
- return FALSE;
- }
-
- bonobo_object_release_unref (db, NULL);
- return TRUE;
-}
-
-/* Write prefs to disk */
-void
-e_summary_preferences_save (ESummaryPrefs *prefs)
-{
- Bonobo_ConfigDatabase db;
- CORBA_Environment ev;
- char *vector;
-
- g_return_if_fail (prefs != NULL);
-
- CORBA_exception_init (&ev);
- db = bonobo_get_object ("wombat:", "Bonobo/ConfigDatabase", &ev);
- if (BONOBO_EX (&ev) || db == CORBA_OBJECT_NIL) {
- g_warning ("Cannot save preferences");
- CORBA_exception_free (&ev);
- return;
- }
- CORBA_exception_free (&ev);
-
- vector = vector_from_str_list (prefs->display_folders);
- bonobo_config_set_string (db, "My-Evolution/Mail/display_folders", vector, NULL);
- g_free (vector);
-
- bonobo_config_set_boolean (db, "My-Evolution/Mail/show_full_path", prefs->show_full_path, NULL);
-
- vector = vector_from_str_list (prefs->rdf_urls);
- bonobo_config_set_string (db, "My-Evolution/RDF/rdf_urls", vector, NULL);
- g_free (vector);
-
- bonobo_config_set_long (db, "My-Evolution/RDF/rdf_refresh_time", prefs->rdf_refresh_time, NULL);
- bonobo_config_set_long (db, "My-Evolution/RDF/limit", prefs->limit, NULL);
-
- vector = vector_from_str_list (prefs->stations);
- bonobo_config_set_string (db, "My-Evolution/Weather/stations", vector, NULL);
- g_free (vector);
-
- bonobo_config_set_long (db, "My-Evolution/Weather/units", prefs->units, NULL);
- bonobo_config_set_long (db, "My-Evolution/Weather/weather_refresh_time", prefs->weather_refresh_time, NULL);
-
- bonobo_config_set_long (db, "My-Evolution/Schedule/days", prefs->days, NULL);
- bonobo_config_set_long (db, "My-Evolution/Schedule/show_tasks", prefs->show_tasks, NULL);
-
- CORBA_exception_init (&ev);
- Bonobo_ConfigDatabase_sync (db, &ev);
- CORBA_exception_free (&ev);
-
- bonobo_object_release_unref (db, NULL);
-}
-
-static void
-free_str_list (GList *list)
-{
- for (; list; list = list->next) {
- g_free (list->data);
- }
-}
-
-void
-e_summary_preferences_free (ESummaryPrefs *prefs)
-{
- if (prefs->display_folders) {
- free_str_list (prefs->display_folders);
- g_list_free (prefs->display_folders);
- }
-
- if (prefs->rdf_urls) {
- free_str_list (prefs->rdf_urls);
- g_list_free (prefs->rdf_urls);
- }
-
- if (prefs->stations) {
- free_str_list (prefs->stations);
- g_list_free (prefs->stations);
- }
-
- g_free (prefs);
-}
-
-static GList *
-copy_str_list (GList *list)
-{
- GList *list_copy = NULL;
-
- for (; list; list = list->next) {
- list_copy = g_list_prepend (list_copy, g_strdup (list->data));
- }
-
- list_copy = g_list_reverse (list_copy);
- return list_copy;
-}
-
-ESummaryPrefs *
-e_summary_preferences_copy (ESummaryPrefs *prefs)
-{
- ESummaryPrefs *prefs_copy;
-
- prefs_copy = g_new (ESummaryPrefs, 1);
-
- prefs_copy->display_folders = copy_str_list (prefs->display_folders);
- prefs_copy->show_full_path = prefs->show_full_path;
-
- prefs_copy->rdf_urls = copy_str_list (prefs->rdf_urls);
- prefs_copy->rdf_refresh_time = prefs->rdf_refresh_time;
- prefs_copy->limit = prefs->limit;
-
- prefs_copy->stations = copy_str_list (prefs->stations);
- prefs_copy->units = prefs->units;
- prefs_copy->weather_refresh_time = prefs->weather_refresh_time;
-
- prefs_copy->days = prefs->days;
- prefs_copy->show_tasks = prefs->show_tasks;
-
- return prefs_copy;
-}
-
-ESummaryPrefs *
-e_summary_preferences_init (void)
-{
- ESummaryPrefs *prefs;
-
- if (global_preferences != NULL) {
- return global_preferences;
- }
-
- prefs = g_new0 (ESummaryPrefs, 1);
- global_preferences = prefs;
-
- if (e_summary_preferences_restore (prefs) == TRUE) {
- return prefs;
- }
-
- /* Defaults */
-
- /* Mail */
- make_initial_mail_list (prefs);
-
- /* RDF */
- make_initial_rdf_list (prefs);
- prefs->rdf_refresh_time = 600;
- prefs->limit = 10;
-
- /* Weather */
- make_initial_weather_list (prefs);
- prefs->units = UNITS_METRIC;
- prefs->weather_refresh_time = 600;
-
- prefs->days = E_SUMMARY_CALENDAR_ONE_DAY;
- prefs->show_tasks = E_SUMMARY_CALENDAR_ALL_TASKS;
-
- return prefs;
-}
-
-ESummaryPrefs *
-e_summary_preferences_get_global (void)
-{
- return global_preferences;
-}
-
-struct _MailPage {
- GtkWidget *etable;
- GtkWidget *all, *shown;
- GtkWidget *fullpath;
- GtkWidget *add, *remove;
-
- GHashTable *model;
- GList *tmp_list;
-};
-
-struct _RDFPage {
- GtkWidget *etable;
- GtkWidget *refresh, *limit;
- GtkWidget *new_url, *delete_url;
-
- GHashTable *default_hash, *model;
- GList *known, *tmp_list;
-};
-
-struct _WeatherPage {
- GtkWidget *etable;
- GtkWidget *refresh, *imperial, *metric;
- GtkWidget *add, *remove;
-
- GHashTable *model;
- GList *tmp_list;
-};
-
-struct _CalendarPage {
- GtkWidget *one, *five, *week, *month;
- GtkWidget *all, *today;
-};
-
-typedef struct _PropertyData {
- EvolutionConfigControl *config_control;
-
- GtkWidget *new_url_entry, *new_name_entry;
- GladeXML *xml;
-
- struct _MailPage *mail;
- struct _RDFPage *rdf;
- struct _WeatherPage *weather;
- struct _CalendarPage *calendar;
-} PropertyData;
-
-struct _RDFInfo {
- char *url;
- char *name;
-
- gboolean custom;
-};
-
-static struct _RDFInfo rdfs[] = {
- {"http://advogato.org/rss/articles.xml", "Advogato", FALSE},
- {"http://barrapunto.com/barrapunto.rdf", "Barrapunto", FALSE},
- {"http://barrapunto.com/gnome.rdf", "Barrapunto GNOME", FALSE,},
- {"http://www.bsdtoday.com/backend/bt.rdf", "BSD Today", FALSE},
- {"http://beyond2000.com/b2k.rdf", "Beyond 2000", FALSE},
- {"http://www.cnn.com/cnn.rss", "CNN", FALSE},
- {"http://www.debianplanet.org/debianplanet/backend.php", "Debian Planet", FALSE},
- {"http://www.dictionary.com/wordoftheday/wotd.rss", N_("Dictionary.com Word of the Day"), FALSE},
- {"http://www.dvdreview.com/rss/newschannel.rss", "DVD Review", FALSE},
- {"http://freshmeat.net/backend/fm.rdf", "Freshmeat", FALSE},
- {"http://news.gnome.org/gnome-news/rdf", "GNotices", FALSE},
- {"http://headlines.internet.com/internetnews/prod-news/news.rss", "Internet.com", FALSE},
- {"http://www.hispalinux.es/backend.php", "HispaLinux", FALSE},
- {"http://dot.kde.org/rdf", "KDE Dot News", FALSE},
- {"http://www.kuro5hin.org/backend.rdf", "Kuro5hin", FALSE},
- {"http://linuxgames.com/bin/mynetscape.pl", "Linux Games", FALSE},
- {"http://linux.com/mrn/jobs/latest_jobs.rss", "Linux Jobs", FALSE},
- {"http://linuxtoday.com/backend/my-netscape.rdf", "Linux Today", FALSE},
- {"http://lwn.net/headlines/rss", "Linux Weekly News", FALSE},
- {"http://www.linux.com/mrn/front_page.rss", "Linux.com", FALSE},
- {"http://memepool.com/memepool.rss", "Memepool", FALSE},
- {"http://www.mozilla.org/news.rdf", "Mozilla", FALSE},
- {"http://www.mozillazine.org/contents.rdf", "Mozillazine", FALSE},
- {"http://www.fool.com/about/headlines/rss_headlines.asp", "The Motley Fool", FALSE},
- {"http://www.newsforge.com/newsforge.rss", "Newsforge", FALSE},
- {"http://www.nanotechnews.com/nano/rdf", "Nanotech News", FALSE},
- {"http://www.pigdog.org/pigdog.rdf", "Pigdog", FALSE},
- {"http://www.python.org/channews.rdf", "Python.org", FALSE},
- {"http://www.quotationspage.com/data/mqotd.rss", N_("Quotes of the Day"), FALSE},
- {"http://www.salon.com/feed/RDF/salon_use.rdf", "Salon", FALSE},
- {"http://slashdot.org/slashdot.rdf", "Slashdot", FALSE},
- {"http://www.theregister.co.uk/tonys/slashdot.rdf", "The Register", FALSE},
- {"http://www.thinkgeek.com/thinkgeek.rdf", "Think Geek", FALSE},
- {"http://www.webreference.com/webreference.rdf", "Web Reference", FALSE},
- {"http://redcarpet.ximian.com/red-carpet.rdf", "Ximian Red Carpet New", FALSE},
- {NULL, NULL, FALSE}
-};
-
-static void
-free_rdf_info (struct _RDFInfo *info)
-{
- g_free (info->url);
- g_free (info->name);
- g_free (info);
-}
-
-static const char *
-find_name_for_url (PropertyData *pd,
- const char *url)
-{
- GList *p;
-
- for (p = pd->rdf->known; p; p = p->next) {
- struct _RDFInfo *info = p->data;
-
- if (info == NULL || info->url == NULL) {
- continue;
- }
-
- if (strcmp (url, info->url) == 0) {
- return info->name;
- }
- }
-
- return url;
-}
-
-static void
-save_known_rdfs (GList *rdfs)
-{
- FILE *handle;
- char *rdf_file;
-
- rdf_file = gnome_util_prepend_user_home ("evolution/RDF-urls.txt");
- handle = fopen (rdf_file, "w");
- g_free (rdf_file);
-
- if (handle == NULL) {
- g_warning ("Error opening RDF-urls.txt");
- return;
- }
-
- for (; rdfs; rdfs = rdfs->next) {
- struct _RDFInfo *info;
- char *line;
-
- info = rdfs->data;
- if (info->custom == FALSE) {
- continue;
- }
-
- line = g_strconcat (info->url, ",", info->name, "\n", NULL);
- fputs (line, handle);
- g_free (line);
- }
-
- fclose (handle);
-}
-
-/* Yeah a silly loop, but p should be short enough that it doesn't matter much */
-static gboolean
-rdf_is_shown (PropertyData *pd,
- const char *url)
-{
- GList *p;
-
- for (p = global_preferences->rdf_urls; p; p = p->next) {
- if (strcmp (p->data, url) == 0) {
- return TRUE;
- }
- }
-
- return FALSE;
-}
-
-static void
-fill_rdf_etable (GtkWidget *widget,
- PropertyData *pd)
-{
- ESummaryShownModelEntry *entry;
- ESummaryShown *ess;
- FILE *handle;
- int i, total;
- char *rdf_file, line[4096];
-
- if (pd->rdf->default_hash == NULL) {
- pd->rdf->default_hash = g_hash_table_new (g_str_hash, g_str_equal);
- }
-
- ess = E_SUMMARY_SHOWN (widget);
-
- /* Fill the defaults first */
- for (i = 0; rdfs[i].url; i++) {
- entry = g_new (ESummaryShownModelEntry, 1);
- entry->location = g_strdup (rdfs[i].url);
- entry->name = g_strdup (rdfs[i].name);
- entry->showable = TRUE;
-
- e_summary_shown_add_node (ess, TRUE, entry, NULL, TRUE, NULL);
-
- if (rdf_is_shown (pd, rdfs[i].url) == TRUE) {
- entry = g_new (ESummaryShownModelEntry, 1);
- entry->location = g_strdup (rdfs[i].url);
- entry->name = g_strdup (rdfs[i].name);
- entry->showable = TRUE;
-
- e_summary_shown_add_node (ess, FALSE, entry, NULL, TRUE, NULL);
- }
-
- pd->rdf->known = g_list_append (pd->rdf->known, &rdfs[i]);
-
- g_hash_table_insert (pd->rdf->default_hash, rdfs[i].url, &rdfs[i]);
- }
-
- total = i;
-
- rdf_file = gnome_util_prepend_user_home ("evolution/RDF-urls.txt");
- handle = fopen (rdf_file, "r");
- g_free (rdf_file);
- if (handle == NULL) {
- /* Open the old location just so that users data isn't lost */
- rdf_file = gnome_util_prepend_user_home ("evolution/config/RDF-urls.txt");
- handle = fopen (rdf_file, "r");
- g_free (rdf_file);
- }
-
- if (handle == NULL) {
- return;
- }
-
- while (fgets (line, 4095, handle)) {
- char **tokens;
- struct _RDFInfo *info;
- int len;
-
- len = strlen (line);
- if (line[len - 1] == '\n') {
- line[len - 1] = 0;
- }
-
- tokens = g_strsplit (line, ",", 2);
- if (tokens == NULL) {
- continue;
- }
-
- if (g_hash_table_lookup (pd->rdf->default_hash, tokens[0]) != NULL) {
- g_strfreev (tokens);
- continue;
- }
-
- info = g_new (struct _RDFInfo, 1);
- info->url = g_strdup (tokens[0]);
- info->name = g_strdup (tokens[1]);
- info->custom = TRUE;
-
- pd->rdf->known = g_list_append (pd->rdf->known, info);
-
- entry = g_new (ESummaryShownModelEntry, 1);
- entry->location = g_strdup (info->url);
- entry->name = g_strdup (info->name);
- entry->showable = TRUE;
-
- e_summary_shown_add_node (ess, TRUE, entry, NULL, TRUE, NULL);
-
- if (rdf_is_shown (pd, tokens[0]) == TRUE) {
- entry = g_new (ESummaryShownModelEntry, 1);
- entry->location = g_strdup (info->url);
- entry->name = g_strdup (info->name);
- entry->showable = TRUE;
-
- e_summary_shown_add_node (ess, FALSE, entry, NULL, TRUE, NULL);
- }
-
- g_strfreev (tokens);
- }
-
- fclose (handle);
-}
-
-static void
-fill_weather_etable (ESummaryShown *ess,
- PropertyData *pd)
-{
- e_summary_weather_fill_etable (ess);
-}
-
-static void
-fill_mail_etable (ESummaryTable *est,
- PropertyData *pd)
-{
- e_summary_mail_fill_list (est);
-}
-
-static void
-mail_show_full_path_toggled_cb (GtkToggleButton *tb,
- PropertyData *pd)
-{
- global_preferences->show_full_path = gtk_toggle_button_get_active (tb);
-
- evolution_config_control_changed (pd->config_control);
-}
-
-#if 0
-static void
-rdf_new_url_clicked_cb (GtkButton *button,
- PropertyData *pd)
-{
- static GtkWidget *add_dialog = NULL;
- GtkWidget *label, *hbox;
-
- if (add_dialog != NULL) {
- gdk_window_raise (add_dialog->window);
- gdk_window_show (add_dialog->window);
- return;
- }
-
- add_dialog = gnome_dialog_new (_("Add a news feed"),
- GNOME_STOCK_BUTTON_OK,
- GNOME_STOCK_BUTTON_CANCEL, NULL);
- gtk_signal_connect (GTK_OBJECT (add_dialog), "clicked",
- GTK_SIGNAL_FUNC (add_dialog_clicked_cb), pd);
- gtk_signal_connect (GTK_OBJECT (add_dialog), "destroy",
- GTK_SIGNAL_FUNC (gtk_widget_destroyed), &add_dialog);
-
- label = gtk_label_new (_("Enter the URL of the news feed you wish to add"));
- gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (add_dialog)->vbox), label,
- TRUE, TRUE, 0);
- hbox = gtk_hbox_new (FALSE, 2);
- label = gtk_label_new (_("Name:"));
- gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
- pd->new_name_entry = gtk_entry_new ();
- gtk_box_pack_start (GTK_BOX (hbox), pd->new_name_entry, TRUE, TRUE, 0);
- gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (add_dialog)->vbox), hbox,
- TRUE, TRUE, 0);
-
- hbox = gtk_hbox_new (FALSE, 2);
- label = gtk_label_new (_("URL:"));
- pd->new_url_entry = gtk_entry_new ();
- gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
- gtk_box_pack_start (GTK_BOX (hbox), pd->new_url_entry, TRUE, TRUE, 0);
- gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (add_dialog)->vbox),
- hbox, TRUE, TRUE, 0);
- gtk_widget_show_all (add_dialog);
-}
-#endif
-
-static void
-rdf_refresh_value_changed_cb (GtkAdjustment *adj,
- PropertyData *pd)
-{
- global_preferences->rdf_refresh_time = (int) adj->value;
- evolution_config_control_changed (pd->config_control);
-}
-
-static void
-rdf_limit_value_changed_cb (GtkAdjustment *adj,
- PropertyData *pd)
-{
- global_preferences->limit = (int) adj->value;
- evolution_config_control_changed (pd->config_control);
-}
-
-static void
-mail_etable_item_changed_cb (ESummaryTable *est,
- ETreePath path,
- PropertyData *pd)
-{
- if (pd->config_control != NULL) {
- evolution_config_control_changed (pd->config_control);
- }
-}
-
-static void
-rdf_etable_item_changed_cb (ESummaryShown *ess,
- PropertyData *pd)
-{
- if (pd->config_control != NULL) {
- evolution_config_control_changed (pd->config_control);
- }
-}
-
-static void
-weather_etable_item_changed_cb (ESummaryShown *ess,
- PropertyData *pd)
-{
- if (pd->config_control != NULL) {
- evolution_config_control_changed (pd->config_control);
- }
-}
-
-static void
-weather_refresh_value_changed_cb (GtkAdjustment *adj,
- PropertyData *pd)
-{
- global_preferences->weather_refresh_time = (int) adj->value;
- evolution_config_control_changed (pd->config_control);
-}
-
-static void
-weather_metric_toggled_cb (GtkToggleButton *tb,
- PropertyData *pd)
-{
- if (gtk_toggle_button_get_active (tb) == FALSE) {
- return;
- }
-
- global_preferences->units = UNITS_METRIC;
- evolution_config_control_changed (pd->config_control);
-}
-
-static void
-weather_imperial_toggled_cb (GtkToggleButton *tb,
- PropertyData *pd)
-{
- if (gtk_toggle_button_get_active (tb) == FALSE) {
- return;
- }
-
- global_preferences->units = UNITS_IMPERIAL;
- evolution_config_control_changed (pd->config_control);
-}
-
-
-static void
-calendar_one_toggled_cb (GtkToggleButton *tb,
- PropertyData *pd)
-{
- if (gtk_toggle_button_get_active (tb) == FALSE) {
- return;
- }
-
- global_preferences->days = E_SUMMARY_CALENDAR_ONE_DAY;
- evolution_config_control_changed (pd->config_control);
-}
-
-static void
-calendar_five_toggled_cb (GtkToggleButton *tb,
- PropertyData *pd)
-{
- if (gtk_toggle_button_get_active (tb) == FALSE) {
- return;
- }
-
- global_preferences->days = E_SUMMARY_CALENDAR_FIVE_DAYS;
- evolution_config_control_changed (pd->config_control);
-}
-
-static void
-calendar_week_toggled_cb (GtkToggleButton *tb,
- PropertyData *pd)
-{
- if (gtk_toggle_button_get_active (tb) == FALSE) {
- return;
- }
-
- global_preferences->days = E_SUMMARY_CALENDAR_ONE_WEEK;
- evolution_config_control_changed (pd->config_control);
-}
-
-static void
-calendar_month_toggled_cb (GtkToggleButton *tb,
- PropertyData *pd)
-{
- if (gtk_toggle_button_get_active (tb) == FALSE) {
- return;
- }
-
- global_preferences->days = E_SUMMARY_CALENDAR_ONE_MONTH;
- evolution_config_control_changed (pd->config_control);
-}
-
-static void
-calendar_all_toggled_cb (GtkToggleButton *tb,
- PropertyData *pd)
-{
- if (gtk_toggle_button_get_active (tb) == FALSE) {
- return;
- }
-
- global_preferences->show_tasks = E_SUMMARY_CALENDAR_ALL_TASKS;
- evolution_config_control_changed (pd->config_control);
-}
-
-static void
-calendar_today_toggled_cb (GtkToggleButton *tb,
- PropertyData *pd)
-{
- if (gtk_toggle_button_get_active (tb) == FALSE) {
- return;
- }
-
- global_preferences->show_tasks = E_SUMMARY_CALENDAR_TODAYS_TASKS;
- evolution_config_control_changed (pd->config_control);
-}
-
-static gboolean
-make_property_dialog (PropertyData *pd)
-{
- struct _MailPage *mail;
- struct _RDFPage *rdf;
- struct _WeatherPage *weather;
- struct _CalendarPage *calendar;
-
- /* Mail */
- mail = pd->mail = g_new (struct _MailPage, 1);
- mail->tmp_list = NULL;
-
- mail->etable = glade_xml_get_widget (pd->xml, "mail-custom");
- g_return_val_if_fail (mail->etable != NULL, FALSE);
-
- fill_mail_etable (E_SUMMARY_TABLE (mail->etable), pd);
-
- gtk_signal_connect (GTK_OBJECT (mail->etable), "item-changed",
- GTK_SIGNAL_FUNC (mail_etable_item_changed_cb), pd);
- mail->model = E_SUMMARY_TABLE (mail->etable)->model;
- mail->fullpath = glade_xml_get_widget (pd->xml, "checkbutton1");
- g_return_val_if_fail (mail->fullpath != NULL, FALSE);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (mail->fullpath),
- global_preferences->show_full_path);
- gtk_signal_connect (GTK_OBJECT (mail->fullpath), "toggled",
- GTK_SIGNAL_FUNC (mail_show_full_path_toggled_cb), pd);
-
- /* RDF */
- rdf = pd->rdf = g_new (struct _RDFPage, 1);
- rdf->known = NULL;
- rdf->tmp_list = NULL;
- rdf->default_hash = NULL;
-
- rdf->etable = glade_xml_get_widget (pd->xml, "rdf-custom");
- g_return_val_if_fail (rdf->etable != NULL, FALSE);
-
- gtk_signal_connect (GTK_OBJECT (rdf->etable), "item-changed",
- GTK_SIGNAL_FUNC (rdf_etable_item_changed_cb), pd);
-
- fill_rdf_etable (rdf->etable, pd);
- rdf->refresh = glade_xml_get_widget (pd->xml, "spinbutton1");
- g_return_val_if_fail (rdf->refresh != NULL, FALSE);
- gtk_spin_button_set_value (GTK_SPIN_BUTTON (rdf->refresh),
- (float) global_preferences->rdf_refresh_time);
- gtk_signal_connect (GTK_OBJECT (GTK_SPIN_BUTTON (rdf->refresh)->adjustment), "value_changed",
- GTK_SIGNAL_FUNC (rdf_refresh_value_changed_cb), pd);
-
- rdf->limit = glade_xml_get_widget (pd->xml, "spinbutton4");
- g_return_val_if_fail (rdf->limit != NULL, FALSE);
- gtk_spin_button_set_value (GTK_SPIN_BUTTON (rdf->limit),
- (float) global_preferences->limit);
- gtk_signal_connect (GTK_OBJECT (GTK_SPIN_BUTTON (rdf->limit)->adjustment), "value_changed",
- GTK_SIGNAL_FUNC (rdf_limit_value_changed_cb), pd);
-
- /* Weather */
- weather = pd->weather = g_new (struct _WeatherPage, 1);
- weather->tmp_list = NULL;
-
- weather->etable = glade_xml_get_widget (pd->xml, "weather-custom");
- g_return_val_if_fail (weather->etable != NULL, FALSE);
-
- gtk_signal_connect (GTK_OBJECT (weather->etable), "item-changed",
- GTK_SIGNAL_FUNC (weather_etable_item_changed_cb),
- pd);
-
- fill_weather_etable (E_SUMMARY_SHOWN (weather->etable), pd);
-
- weather->refresh = glade_xml_get_widget (pd->xml, "spinbutton5");
- g_return_val_if_fail (weather->refresh != NULL, FALSE);
- gtk_spin_button_set_value (GTK_SPIN_BUTTON (weather->refresh),
- (float) global_preferences->weather_refresh_time);
- gtk_signal_connect (GTK_OBJECT (GTK_SPIN_BUTTON (weather->refresh)->adjustment),
- "value-changed",
- GTK_SIGNAL_FUNC (weather_refresh_value_changed_cb),
- pd);
-
- weather->metric = glade_xml_get_widget (pd->xml, "radiobutton7");
- g_return_val_if_fail (weather->metric != NULL, FALSE);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (weather->metric),
- (global_preferences->units == UNITS_METRIC));
- gtk_signal_connect (GTK_OBJECT (weather->metric), "toggled",
- GTK_SIGNAL_FUNC (weather_metric_toggled_cb), pd);
-
- weather->imperial = glade_xml_get_widget (pd->xml, "radiobutton8");
- g_return_val_if_fail (weather->imperial != NULL, FALSE);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (weather->imperial),
- (global_preferences->units == UNITS_IMPERIAL));
- gtk_signal_connect (GTK_OBJECT (weather->imperial), "toggled",
- GTK_SIGNAL_FUNC (weather_imperial_toggled_cb), pd);
-
- /* Calendar */
- calendar = pd->calendar = g_new (struct _CalendarPage, 1);
- calendar->one = glade_xml_get_widget (pd->xml, "radiobutton3");
- g_return_val_if_fail (calendar->one != NULL, FALSE);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (calendar->one),
- (global_preferences->days == E_SUMMARY_CALENDAR_ONE_DAY));
- gtk_signal_connect (GTK_OBJECT (calendar->one), "toggled",
- GTK_SIGNAL_FUNC (calendar_one_toggled_cb), pd);
-
- calendar->five = glade_xml_get_widget (pd->xml, "radiobutton4");
- g_return_val_if_fail (calendar->five != NULL, FALSE);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (calendar->five),
- (global_preferences->days == E_SUMMARY_CALENDAR_FIVE_DAYS));
- gtk_signal_connect (GTK_OBJECT (calendar->five), "toggled",
- GTK_SIGNAL_FUNC (calendar_five_toggled_cb), pd);
-
- calendar->week = glade_xml_get_widget (pd->xml, "radiobutton5");
- g_return_val_if_fail (calendar->week != NULL, FALSE);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (calendar->week),
- (global_preferences->days == E_SUMMARY_CALENDAR_ONE_WEEK));
- gtk_signal_connect (GTK_OBJECT (calendar->week), "toggled",
- GTK_SIGNAL_FUNC (calendar_week_toggled_cb), pd);
-
- calendar->month = glade_xml_get_widget (pd->xml, "radiobutton6");
- g_return_val_if_fail (calendar->month != NULL, FALSE);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (calendar->month),
- (global_preferences->days == E_SUMMARY_CALENDAR_ONE_MONTH));
- gtk_signal_connect (GTK_OBJECT (calendar->month), "toggled",
- GTK_SIGNAL_FUNC (calendar_month_toggled_cb), pd);
-
- calendar->all = glade_xml_get_widget (pd->xml, "radiobutton1");
- g_return_val_if_fail (calendar->all != NULL, FALSE);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (calendar->all),
- (global_preferences->show_tasks == E_SUMMARY_CALENDAR_ALL_TASKS));
- gtk_signal_connect (GTK_OBJECT (calendar->all), "toggled",
- GTK_SIGNAL_FUNC (calendar_all_toggled_cb), pd);
-
- calendar->today = glade_xml_get_widget (pd->xml, "radiobutton2");
- g_return_val_if_fail (calendar->today != NULL, FALSE);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (calendar->today),
- (global_preferences->show_tasks == E_SUMMARY_CALENDAR_TODAYS_TASKS));
- gtk_signal_connect (GTK_OBJECT(calendar->today), "toggled",
- GTK_SIGNAL_FUNC (calendar_today_toggled_cb), pd);
-
- return TRUE;
-}
-
-static void
-free_property_dialog (PropertyData *pd)
-{
- if (pd->rdf) {
- g_list_free (pd->rdf->known);
-
- free_str_list (pd->rdf->tmp_list);
- g_list_free (pd->rdf->tmp_list);
- g_free (pd->rdf);
- }
- if (pd->mail) {
- free_str_list (pd->mail->tmp_list);
- g_list_free (pd->mail->tmp_list);
- g_free (pd->mail);
- }
- if (pd->weather) {
- free_str_list (pd->weather->tmp_list);
- g_list_free (pd->weather->tmp_list);
- g_free (pd->weather);
- }
- if (pd->calendar) {
- g_free (pd->calendar);
- }
-
- if (pd->xml) {
- gtk_object_unref (GTK_OBJECT (pd->xml));
- }
-
- g_free (pd);
-}
-
-static void
-maybe_add_to_shown (gpointer key,
- gpointer value,
- gpointer data)
-{
- ESummaryTableModelEntry *item;
- GList **list;
-
- item = (ESummaryTableModelEntry *) value;
- list = (GList **) data;
-
- if (item->shown == TRUE) {
- *list = g_list_prepend (*list, g_strdup (item->location));
- }
-}
-
-
-/* Prototypes to shut gcc up */
-GtkWidget *e_summary_preferences_make_mail_table (PropertyData *pd);
-GtkWidget *e_summary_preferences_make_rdf_table (PropertyData *pd);
-GtkWidget *e_summary_preferences_make_weather_table (PropertyData *pd);
-
-GtkWidget *
-e_summary_preferences_make_mail_table (PropertyData *pd)
-{
- return e_summary_table_new (g_hash_table_new (NULL, NULL));
-}
-
-GtkWidget *
-e_summary_preferences_make_rdf_table (PropertyData *pd)
-{
- return e_summary_shown_new ();
-}
-
-GtkWidget *
-e_summary_preferences_make_weather_table (PropertyData *pd)
-{
- return e_summary_shown_new ();
-}
-
-
-/* The factory for the ConfigControl. */
-
-static void
-add_shown_to_list (gpointer key,
- gpointer value,
- gpointer data)
-{
- ESummaryShownModelEntry *item;
- GList **list;
-
- item = (ESummaryShownModelEntry *) value;
- list = (GList **) data;
-
- *list = g_list_prepend (*list, g_strdup (item->location));
-}
-
-static void
-config_control_apply_cb (EvolutionConfigControl *control,
- void *data)
-{
- PropertyData *pd;
-
- pd = (PropertyData *) data;
-
- if (pd->rdf->tmp_list) {
- free_str_list (pd->rdf->tmp_list);
- g_list_free (pd->rdf->tmp_list);
- pd->rdf->tmp_list = NULL;
- }
- /* Take each news feed which is on and add it
- to the shown list */
- g_hash_table_foreach (E_SUMMARY_SHOWN (pd->rdf->etable)->shown_model,
- add_shown_to_list, &pd->rdf->tmp_list);
-
- if (global_preferences->rdf_urls) {
- free_str_list (global_preferences->rdf_urls);
- g_list_free (global_preferences->rdf_urls);
- }
-
- global_preferences->rdf_urls = copy_str_list (pd->rdf->tmp_list);
-
- /* Weather */
- if (pd->weather->tmp_list) {
- free_str_list (pd->weather->tmp_list);
- g_list_free (pd->weather->tmp_list);
- pd->weather->tmp_list = NULL;
- }
-
- g_hash_table_foreach (E_SUMMARY_SHOWN (pd->weather->etable)->shown_model,
- add_shown_to_list, &pd->weather->tmp_list);
- if (global_preferences->stations) {
- free_str_list (global_preferences->stations);
- g_list_free (global_preferences->stations);
- }
- global_preferences->stations = copy_str_list (pd->weather->tmp_list);
-
- /* Folders */
- if (pd->mail->tmp_list) {
- free_str_list (pd->mail->tmp_list);
- g_list_free (pd->mail->tmp_list);
- pd->mail->tmp_list = NULL;
- }
- g_hash_table_foreach (pd->mail->model, maybe_add_to_shown, &pd->mail->tmp_list);
-
- if (global_preferences->display_folders) {
- free_str_list (global_preferences->display_folders);
- g_list_free (global_preferences->display_folders);
- }
- global_preferences->display_folders = copy_str_list (pd->mail->tmp_list);
-
- e_summary_reconfigure_all ();
-}
-
-static void
-config_control_destroy_cb (EvolutionConfigControl *config_control,
- void *data)
-{
- PropertyData *pd;
-
- pd = (PropertyData *) data;
-
- e_summary_preferences_save (global_preferences);
- free_property_dialog (pd);
-}
-
-static BonoboObject *
-factory_fn (BonoboGenericFactory *generic_factory,
- void *data)
-{
- PropertyData *pd;
- GtkWidget *widget;
-
- pd = g_new0 (PropertyData, 1);
-
- pd->xml = glade_xml_new (EVOLUTION_GLADEDIR "/my-evolution.glade", NULL);
- g_return_val_if_fail (pd->xml != NULL, NULL);
-
- widget = glade_xml_get_widget (pd->xml, "notebook");
- if (widget == NULL || ! make_property_dialog (pd)) {
- g_warning ("Missing some part of XML file");
- free_property_dialog (pd);
- return NULL;
- }
-
- gtk_widget_ref (widget);
- gtk_container_remove (GTK_CONTAINER (widget->parent), widget);
-
- gtk_widget_show (widget);
- pd->config_control = evolution_config_control_new (widget);
-
- gtk_widget_unref (widget);
-
- gtk_signal_connect (GTK_OBJECT (pd->config_control), "apply",
- GTK_SIGNAL_FUNC (config_control_apply_cb), pd);
- gtk_signal_connect (GTK_OBJECT (pd->config_control), "destroy",
- GTK_SIGNAL_FUNC (config_control_destroy_cb), pd);
-
- return BONOBO_OBJECT (pd->config_control);
-}
-
-gboolean
-e_summary_preferences_register_config_control_factory (void)
-{
- if (bonobo_generic_factory_new (FACTORY_ID, factory_fn, NULL) == NULL)
- return FALSE;
-
- return TRUE;
-}
diff --git a/my-evolution/e-summary-preferences.h b/my-evolution/e-summary-preferences.h
deleted file mode 100644
index 867380bd7f..0000000000
--- a/my-evolution/e-summary-preferences.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-summary-preferences.h
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Iain Holmes
- */
-
-#ifndef __E_SUMMARY_PREFERENCES_H__
-#define __E_SUMMARY_PREFERENCES_H__
-
-#include <bonobo/bonobo-ui-component.h>
-
-
-gboolean e_summary_preferences_restore (ESummaryPrefs *prefs);
-void e_summary_preferences_save (ESummaryPrefs *prefs);
-void e_summary_preferences_free (ESummaryPrefs *prefs);
-ESummaryPrefs *e_summary_preferences_copy (ESummaryPrefs *prefs);
-ESummaryPrefs *e_summary_preferences_init (void);
-ESummaryPrefs *e_summary_preferences_get_global (void);
-
-gboolean e_summary_preferences_register_config_control_factory (void);
-
-
-#endif
diff --git a/my-evolution/e-summary-rdf.c b/my-evolution/e-summary-rdf.c
deleted file mode 100644
index 9863b34a0c..0000000000
--- a/my-evolution/e-summary-rdf.c
+++ /dev/null
@@ -1,633 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-summary-rdf.c
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Iain Holmes
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdlib.h>
-#include <glib.h>
-#include <gtk/gtkmain.h>
-
-#include <gnome-xml/parser.h>
-#include <gnome-xml/xmlmemory.h>
-
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-i18n.h>
-
-
-#include <gal/widgets/e-unicode.h>
-
-#include <libsoup/soup.h>
-
-#include "e-summary.h"
-
-struct _ESummaryRDF {
- ESummaryConnection *connection;
- GList *rdfs;
-
- char *html;
- guint32 timeout;
- gboolean online;
-};
-
-typedef struct _RDF {
- char *uri;
- char *html;
-
- xmlDocPtr cache;
- ESummary *summary;
-
- gboolean shown;
-
- /* Soup stuff */
- SoupMessage *message;
-} RDF;
-
-int xmlSubstituteEntitiesDefaultValue = 1;
-
-char *
-e_summary_rdf_get_html (ESummary *summary)
-{
- GList *rdfs;
- char *html;
- GString *string;
-
- if (summary->rdf == NULL) {
- return NULL;
- }
-
- string = g_string_new ("");
- for (rdfs = summary->rdf->rdfs; rdfs; rdfs = rdfs->next) {
- if (((RDF *)rdfs->data)->html == NULL) {
- continue;
- }
-
- g_string_append (string, ((RDF *)rdfs->data)->html);
- }
-
- html = string->str;
- g_string_free (string, FALSE);
- return html;
-}
-
-/************ RDF Parser *******************/
-
-static char *
-layer_find (xmlNodePtr node,
- char *match,
- char *fail)
-{
- while (node!=NULL) {
-#ifdef RDF_DEBUG
- xmlDebugDumpNode (stdout, node, 32);
- printf("%s.\n", node->name);
-#endif
- if (strcasecmp (node->name, match)==0) {
- if (node->childs != NULL && node->childs->content != NULL) {
- return node->childs->content;
- } else {
- return fail;
- }
- }
- node = node->next;
- }
- return fail;
-}
-
-static char *
-layer_find_url (xmlNodePtr node,
- char *match,
- char *fail)
-{
- char *p = layer_find (node, match, fail);
- char *r = p;
- static char *wb = NULL;
- char *w;
-
- if (wb) {
- g_free (wb);
- }
-
- wb = w = g_malloc (3 * strlen (p));
-
- if (*r == ' ') r++; /* Fix UF bug */
-
- while (*r) {
- if (strncmp (r, "&amp;", 5) == 0) {
- *w++ = '&';
- r += 5;
- continue;
- }
- if (strncmp (r, "&lt;", 4) == 0) {
- *w++ = '<';
- r += 4;
- continue;
- }
- if (strncmp (r, "&gt;", 4) == 0) {
- *w++ = '>';
- r += 4;
- continue;
- }
- if (*r == '"' || *r == ' '){
- *w++ = '%';
- *w++ = "0123456789ABCDEF"[*r/16];
- *w++ = "0123456789ABCDEF"[*r&15];
- r++;
- continue;
- }
- *w++ = *r++;
- }
- *w = 0;
- return wb;
-}
-
-static void
-tree_walk (xmlNodePtr root,
- RDF *r,
- GString *html)
-{
- xmlNodePtr walk;
- xmlNodePtr rewalk = root;
- xmlNodePtr channel = NULL;
- xmlNodePtr image = NULL;
- xmlNodePtr item[16];
- int items = 0;
- int limit;
- int i;
- char *t, *u;
- char *tmp;
-
- if (r->summary->preferences == NULL) {
- limit = 10;
- } else {
- limit = r->summary->preferences->limit;
- }
-
- /* FIXME: Need arrows */
- if (r->shown == FALSE) {
- char *p;
-
- /* FIXME: Hash table & UID */
- p = g_strdup_printf ("<font size=\"-2\"><a href=\"rdf://%d\">(+)</a></font>", GPOINTER_TO_INT (r));
- g_string_append (html, p);
- g_free (p);
- } else {
- char *p;
-
- /* FIXME: Hash table & UID */
- p = g_strdup_printf ("<font size=\"-2\"><a href=\"rdf://%d\">(-)</a></font>", GPOINTER_TO_INT (r));
- g_string_append (html, p);
- g_free (p);
- }
-
- do {
- walk = rewalk;
- rewalk = NULL;
-
- while (walk!=NULL){
-#ifdef RDF_DEBUG
- printf ("%p, %s\n", walk, walk->name);
-#endif
- if (strcasecmp (walk->name, "rdf") == 0) {
- rewalk = walk->childs;
- walk = walk->next;
- continue;
- }
- if (strcasecmp (walk->name, "rss") == 0){
- rewalk = walk->childs;
- walk = walk->next;
- continue;
- }
- /* This is the channel top level */
-#ifdef RDF_DEBUG
- printf ("Top level '%s'.\n", walk->name);
-#endif
- if (strcasecmp (walk->name, "channel") == 0) {
- channel = walk;
- rewalk = channel->childs;
- }
- if (strcasecmp (walk->name, "image") == 0) {
- image = walk;
- g_print ("Image\n");
- }
- if (strcasecmp (walk->name, "item") == 0 && items < 16) {
- item[items++] = walk;
- }
- walk = walk->next;
- }
- }
- while (rewalk);
-
- if (channel == NULL) {
- fprintf(stderr, "No channel definition.\n");
- return;
- }
-
- t = layer_find(channel->childs, "title", "");
- u = layer_find(channel->childs, "link", "");
-
- if (*u != '\0')
- g_string_sprintfa (html, "<a href=\"%s\">", u);
- if (r->cache->encoding)
- t = e_utf8_from_charset_string (r->cache->encoding, t);
- else
- t = e_utf8_from_locale_string (t);
- g_string_append (html, t);
- g_free (t);
- if (*u != '\0') {
- g_string_append (html, "</a>");
- }
- g_string_append (html, "</b></dt>");
-
- if (r->shown == FALSE) {
- g_string_append (html, "</dl>");
- return;
- }
-
- g_string_append (html, "<ul>");
-
- items = MIN (limit, items);
- for (i = 0; i < items; i++) {
- char *p = layer_find (item[i]->childs, "title", "No information");
-
- tmp = g_strdup_printf ("<LI><font size=\"-1\"><A href=\"%s\">\n", layer_find_url(item[i]->childs, "link", ""));
- g_string_append (html, tmp);
- g_free (tmp);
-
- if (r->cache->encoding)
- p = e_utf8_from_charset_string (r->cache->encoding, p);
- else
- p = e_utf8_from_locale_string (p);
- tmp = g_strdup_printf ("%s\n</A></font></li>", p);
- g_free (p);
- g_string_append (html, tmp);
- g_free (tmp);
- }
- g_string_append (html, "</UL>");
-}
-
-static void
-display_doc (RDF *r)
-{
- GString *html;
-
- html = g_string_new ("<dl><dt><img src=\"ico-rdf.png\" align=\"middle\" "
- "width=\"48\" height=\"48\">");
-
- if (r->cache == NULL) {
- char *tmp_utf, *str;
-
- str = g_strdup_printf ("<b>%s:</b><br>%s", _("Error downloading RDF"),
- r->uri);
- tmp_utf = e_utf8_from_locale_string (str);
- g_free (str);
-
- g_string_append (html, tmp_utf);
- g_string_append (html, "</dt>");
- g_free (tmp_utf);
- } else {
- tree_walk (r->cache->root, r, html);
- }
-
- g_free (r->html);
- g_string_append (html, "</dl>");
- r->html = html->str;
- g_string_free (html, FALSE);
-
- e_summary_draw (r->summary);
-}
-
-static void
-message_finished (SoupMessage *msg,
- gpointer userdata)
-{
- xmlDocPtr doc;
- RDF *r = (RDF *) userdata;
-
- if (SOUP_MESSAGE_IS_ERROR (msg)) {
- g_warning ("Message failed: %d\n%s", msg->errorcode,
- msg->errorphrase);
- r->cache = NULL;
- r->message = NULL;
-
- display_doc (r);
- return;
- }
-
- if (r->cache != NULL) {
- xmlFreeDoc (r->cache);
- r->cache = NULL;
- }
-
- doc = xmlParseMemory (msg->response.body, msg->response.length);
- r->cache = doc;
- r->message = NULL;
-
- /* Display it */
- display_doc (r);
-}
-
-gboolean
-e_summary_rdf_update (ESummary *summary)
-{
- GList *r;
-
- if (summary->rdf->online == FALSE) {
- g_warning ("%s: Repolling but offline", __FUNCTION__);
- return TRUE;
- }
-
- for (r = summary->rdf->rdfs; r; r = r->next) {
- SoupContext *context;
- RDF *rdf = r->data;
-
- if (rdf->message) {
- continue;
- }
-
- context = soup_context_get (rdf->uri);
- g_print ("Updating %s\n", rdf->uri);
- if (context == NULL) {
- g_warning ("Invalid URL: %s", rdf->uri);
- soup_context_unref (context);
- continue;
- }
-
- rdf->message = soup_message_new (context, SOUP_METHOD_GET);
- soup_context_unref (context);
- soup_message_queue (rdf->message, message_finished, rdf);
- }
-
- return TRUE;
-}
-
-static void
-e_summary_rdf_add_uri (ESummary *summary,
- const char *uri)
-{
- RDF *r;
-
- r = g_new0 (RDF, 1);
- r->summary = summary;
- r->uri = g_strdup (uri);
- r->shown = TRUE;
- summary->rdf->rdfs = g_list_append (summary->rdf->rdfs, r);
-}
-
-static void
-e_summary_rdf_protocol (ESummary *summary,
- const char *uri,
- void *closure)
-{
- RDF *r;
- int a;
-
- a = atoi (uri + 6);
- if (a == 0) {
- g_warning ("A == 0");
- return;
- }
-
- r = (RDF *) GINT_TO_POINTER (a);
- r->shown = !r->shown;
-
- display_doc (r);
-}
-
-static int
-e_summary_rdf_count (ESummary *summary,
- void *data)
-{
- ESummaryRDF *rdf;
- GList *p;
- int count = 0;
-
- rdf = summary->rdf;
- for (p = rdf->rdfs; p; p = p->next) {
- RDF *r = p->data;
-
- if (r->message != NULL) {
- count++;
- }
- }
-
- return count;
-}
-
-static ESummaryConnectionData *
-make_connection (RDF *r)
-{
- ESummaryConnectionData *d;
-
- d = g_new (ESummaryConnectionData, 1);
- d->hostname = g_strdup (r->uri);
- d->type = g_strdup (_("News Feed"));
-
- return d;
-}
-
-static GList *
-e_summary_rdf_add (ESummary *summary,
- void *data)
-{
- ESummaryRDF *rdf;
- GList *p, *connections = NULL;
-
- rdf = summary->rdf;
- for (p = rdf->rdfs; p; p = p->next) {
- RDF *r = p->data;
-
- if (r->message != NULL) {
- ESummaryConnectionData *d;
-
- d = make_connection (r);
- connections = g_list_prepend (connections, d);
- }
- }
-
- return connections;
-}
-
-static void
-rdf_free (RDF *r)
-{
- /* Stop the download */
- if (r->message) {
- soup_message_cancel (r->message);
- }
-
- g_free (r->uri);
- g_free (r->html);
-
- if (r->cache) {
- xmlFreeDoc (r->cache);
- }
-
- g_free (r);
-}
-
-static void
-e_summary_rdf_set_online (ESummary *summary,
- GNOME_Evolution_OfflineProgressListener progress,
- gboolean online,
- void *data)
-{
- ESummaryRDF *rdf;
- GList *p;
-
- rdf = summary->rdf;
- if (rdf->online == online) {
- return;
- }
-
- if (online == TRUE) {
- e_summary_rdf_update (summary);
- rdf->timeout = gtk_timeout_add (summary->preferences->rdf_refresh_time * 1000,
- (GtkFunction) e_summary_rdf_update,
- summary);
- } else {
- for (p = rdf->rdfs; p; p = p->next) {
- RDF *r;
-
- r = p->data;
- if (r->message) {
- soup_message_cancel (r->message);
- r->message = NULL;
- }
- }
-
- gtk_timeout_remove (rdf->timeout);
- rdf->timeout = 0;
- }
-
- rdf->online = online;
-}
-
-void
-e_summary_rdf_init (ESummary *summary)
-{
- ESummaryPrefs *prefs;
- ESummaryRDF *rdf;
- ESummaryConnection *connection;
- int timeout;
-
- g_return_if_fail (summary != NULL);
- g_return_if_fail (IS_E_SUMMARY (summary));
-
- prefs = summary->preferences;
- rdf = g_new0 (ESummaryRDF, 1);
- summary->rdf = rdf;
-
- connection = g_new (ESummaryConnection, 1);
- connection->count = e_summary_rdf_count;
- connection->add = e_summary_rdf_add;
- connection->set_online = e_summary_rdf_set_online;
- connection->closure = NULL;
- connection->callback = NULL;
- connection->callback_closure = NULL;
-
- rdf->connection = connection;
- rdf->online = TRUE;
- e_summary_add_online_connection (summary, connection);
-
- e_summary_add_protocol_listener (summary, "rdf", e_summary_rdf_protocol, rdf);
- if (prefs == NULL) {
- e_summary_rdf_add_uri (summary, "http://linuxtoday.com/backend/my-netscape.rdf");
- e_summary_rdf_add_uri (summary, "http://www.salon.com/feed/RDF/salon_use.rdf");
- timeout = 600;
- } else {
- GList *p;
-
- for (p = prefs->rdf_urls; p; p = p->next) {
- e_summary_rdf_add_uri (summary, p->data);
- }
- timeout = prefs->rdf_refresh_time;
- }
-
- e_summary_rdf_update (summary);
- rdf->timeout = gtk_timeout_add (timeout * 1000,
- (GtkFunction) e_summary_rdf_update, summary);
-
- return;
-}
-
-void
-e_summary_rdf_reconfigure (ESummary *summary)
-{
- ESummaryRDF *rdf;
- GList *old, *p;
-
- g_return_if_fail (summary != NULL);
- g_return_if_fail (IS_E_SUMMARY (summary));
-
- rdf = summary->rdf;
-
- /* Stop timeout */
- gtk_timeout_remove (rdf->timeout);
-
- old = rdf->rdfs;
- rdf->rdfs = NULL;
- for (p = old; p; p = p->next) {
- RDF *r;
-
- r = p->data;
- rdf_free (r);
- }
- g_list_free (old);
-
- for (p = summary->preferences->rdf_urls; p; p = p->next) {
- e_summary_rdf_add_uri (summary, p->data);
- }
-
- rdf->timeout = gtk_timeout_add (summary->preferences->rdf_refresh_time * 1000, (GtkFunction) e_summary_rdf_update, summary);
- e_summary_rdf_update (summary);
-}
-
-void
-e_summary_rdf_free (ESummary *summary)
-{
- ESummaryRDF *rdf;
- GList *p;
-
- g_return_if_fail (summary != NULL);
- g_return_if_fail (IS_E_SUMMARY (summary));
-
- rdf = summary->rdf;
-
- if (rdf->timeout != 0) {
- gtk_timeout_remove (rdf->timeout);
- }
- for (p = rdf->rdfs; p; p = p->next) {
- RDF *r = p->data;
-
- rdf_free (r);
- }
- g_list_free (rdf->rdfs);
- g_free (rdf->html);
-
- e_summary_remove_online_connection (summary, rdf->connection);
- g_free (rdf->connection);
-
- g_free (rdf);
- summary->rdf = NULL;
-}
diff --git a/my-evolution/e-summary-rdf.h b/my-evolution/e-summary-rdf.h
deleted file mode 100644
index 0cf3b4236b..0000000000
--- a/my-evolution/e-summary-rdf.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-summary-rdf.h
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Iain Holmes
- */
-
-#ifndef __E_SUMMARY_RDF_H__
-#define __E_SUMMARY_RDF_H__
-
-#include "e-summary-type.h"
-
-typedef struct _ESummaryRDF ESummaryRDF;
-
-char *e_summary_rdf_get_html (ESummary *summary);
-void e_summary_rdf_init (ESummary *summary);
-void e_summary_rdf_reconfigure (ESummary *summary);
-void e_summary_rdf_free (ESummary *summary);
-gboolean e_summary_rdf_update (ESummary *summary);
-
-#endif
diff --git a/my-evolution/e-summary-shown.c b/my-evolution/e-summary-shown.c
deleted file mode 100644
index 6c0dbd726f..0000000000
--- a/my-evolution/e-summary-shown.c
+++ /dev/null
@@ -1,621 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Iain Holmes <iain@ximian.com>
- *
- * Copyright 2002 Ximian, Inc. (www.ximian.com)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <string.h>
-
-#include <gtk/gtkhbox.h>
-#include <gtk/gtkenums.h>
-#include <gtk/gtksignal.h>
-
-#include <gal/util/e-util.h>
-#include <gal/widgets/e-gui-utils.h>
-
-#include <gal/e-table/e-table-header.h>
-#include <gal/e-table/e-table-header-item.h>
-#include <gal/e-table/e-table-item.h>
-#include <gal/e-table/e-cell-text.h>
-#include <gal/e-table/e-cell-tree.h>
-#include <gal/e-table/e-table.h>
-#include <gal/e-table/e-tree.h>
-
-#include <gal/e-table/e-tree-scrolled.h>
-#include <gal/e-table/e-tree-memory.h>
-#include <gal/e-table/e-tree-memory-callbacks.h>
-#include <gal/e-table/e-tree-table-adapter.h>
-
-#include <libgnome/gnome-i18n.h>
-#include <libgnomeui/gnome-init.h>
-#include <libgnomeui/gnome-stock.h>
-
-#include "e-summary-shown.h"
-
-#define COLS 1
-
-/* Needs to be filled in before use */
-#define SPEC "<ETableSpecification cursor-mode=\"line\" draw-focus=\"true\"> \
-<ETableColumn model_col=\"0\" _title=\"%s\" resizable=\"true\" cell=\"tree-string\" compare=\"string\"/> \
-<ETableState> \
-<column source=\"0\"/> \
-<grouping></grouping> \
-</ETableState> \
-</ETableSpecification>"
-
-#define PARENT_TYPE (gtk_hbox_get_type ())
-static GtkObjectClass *e_summary_shown_parent_class;
-
-enum {
- ITEM_CHANGED,
- LAST_SIGNAL
-};
-static guint32 shown_signals[LAST_SIGNAL] = { 0 };
-
-typedef struct _TableData {
- ETreeModel *etm;
- ETreePath *root;
-
- GtkWidget *etable;
- GSList *contents;
-} TableData;
-
-struct _ESummaryShownPrivate {
- TableData *all, *shown;
- GtkWidget *add, *remove;
-};
-
-static GdkPixbuf *
-icon_at (ETreeModel *etm,
- ETreePath path,
- void *model_data)
-{
- return NULL;
-}
-
-static int
-column_count (ETreeModel *etm,
- void *data)
-{
- return COLS;
-}
-
-static void *
-duplicate_value (ETreeModel *etm,
- int col,
- const void *value,
- void *data)
-{
- return g_strdup (value);
-}
-
-static void
-free_value (ETreeModel *etm,
- int col,
- void *value,
- void *data)
-{
- g_free (value);
-}
-
-static void *
-initialise_value (ETreeModel *etm,
- int col,
- void *data)
-{
- return g_strdup ("");
-}
-
-static gboolean
-value_is_empty (ETreeModel *etm,
- int col,
- const void *value,
- void *data)
-{
- return !(value && *(char *)value);
-}
-
-static char *
-value_to_string (ETreeModel *etm,
- int col,
- const void *value,
- void *data)
-{
- return g_strdup (value);
-}
-
-static void *
-value_at (ETreeModel *etm,
- ETreePath path,
- int col,
- void *model_data)
-{
- GHashTable *model = model_data;
- ESummaryShownModelEntry *entry;
-
- if (e_tree_model_node_is_root (etm, path)) {
- return "<Root>";
- }
-
- entry = g_hash_table_lookup (model, path);
- if (entry == NULL) {
- return "<None>";
- } else {
- return entry->name;
- }
-}
-
-static gboolean
-is_editable (ETreeModel *etm,
- ETreePath path,
- int col,
- void *model_data)
-{
- return FALSE;
-}
-
-static void
-destroy (GtkObject *object)
-{
- ESummaryShown *shown;
- ESummaryShownPrivate *priv;
-
- shown = E_SUMMARY_SHOWN (object);
- priv = shown->priv;
-
- if (priv == NULL) {
- return;
- }
-
- g_free (priv);
- shown->priv = NULL;
-
- e_summary_shown_parent_class->destroy (object);
-}
-
-static void
-e_summary_shown_class_init (GtkObjectClass *object_class)
-{
- object_class->destroy = destroy;
-
- e_summary_shown_parent_class = gtk_type_class (PARENT_TYPE);
-
- shown_signals[ITEM_CHANGED] = gtk_signal_new ("item-changed",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ESummaryShownClass, item_changed),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
- gtk_object_class_add_signals (object_class, shown_signals, LAST_SIGNAL);
-}
-
-static gboolean
-is_location_in_shown (ESummaryShown *shown,
- const char *location)
-{
- GSList *p;
-
- for (p = shown->priv->shown->contents; p; p = p->next) {
- ESummaryShownModelEntry *entry = p->data;
- if (entry->location == NULL) {
- continue;
- }
-
- if (strcmp (entry->location, location) == 0) {
- return TRUE;
- }
- }
-
- return FALSE;
-}
-
-static ESummaryShownModelEntry *
-find_entry_from_location (ESummaryShown *shown,
- const char *location)
-{
- GSList *p;
-
- for (p = shown->priv->shown->contents; p; p = p->next) {
- ESummaryShownModelEntry *entry = p->data;
-
- if (entry->location == NULL) {
- continue;
- }
-
- if (strcmp ((char *) entry->location, location) == 0) {
- return entry;
- }
- }
-
- return NULL;
-}
-
-struct _CountData {
- ESummaryShown *shown;
- int count;
-};
-
-static void
-real_selected_count (ETreePath path,
- gpointer data)
-{
- ESummaryShownModelEntry *entry;
- struct _CountData *cd = data;
-
- entry = g_hash_table_lookup (cd->shown->all_model, path);
- g_return_if_fail (entry != NULL);
-
- if (entry->showable == FALSE) {
- return;
- }
-
- if (is_location_in_shown (cd->shown, entry->location)) {
- return;
- }
-
- cd->count++;
-}
-
-static void
-all_selection_changed (ETree *et,
- ESummaryShown *shown)
-{
- ESelectionModel *esm;
- int count;
-
- esm = e_tree_get_selection_model (et);
-
- count = e_selection_model_selected_count (esm);
- if (count == 0) {
- gtk_widget_set_sensitive (shown->priv->add, FALSE);
- } else {
- struct _CountData *cd;
-
- cd = g_new (struct _CountData, 1);
- cd->shown = shown;
- cd->count = 0;
-
- e_tree_selection_model_foreach (E_TREE_SELECTION_MODEL (esm),
- real_selected_count, cd);
- if (cd->count != 0) {
- gtk_widget_set_sensitive (shown->priv->add, TRUE);
- } else {
- gtk_widget_set_sensitive (shown->priv->add, FALSE);
- }
- }
-}
-
-static void
-shown_selection_changed (ETree *et,
- ESummaryShown *shown)
-{
- ESelectionModel *esm;
- int count;
-
- esm = e_tree_get_selection_model (et);
-
- count = e_selection_model_selected_count (esm);
- if (count == 0) {
- gtk_widget_set_sensitive (shown->priv->remove, FALSE);
- } else {
- gtk_widget_set_sensitive (shown->priv->remove, TRUE);
- }
-}
-
-static void
-maybe_move_to_shown (ETreePath path,
- gpointer closure)
-{
- ESummaryShown *shown = closure;
- ESummaryShownModelEntry *entry, *new_entry;
-
- entry = g_hash_table_lookup (shown->all_model, path);
- g_return_if_fail (entry != NULL);
-
- /* Check is the entry can be shown */
- if (entry->showable == FALSE) {
- return;
- }
-
- /* check if the entry is already in the shown list */
- if (is_location_in_shown (shown, entry->location) == TRUE) {
- return;
- }
-
- new_entry = g_new (ESummaryShownModelEntry, 1);
- new_entry->name = g_strdup (entry->name);
- new_entry->location = g_strdup (entry->location);
- new_entry->showable = entry->showable;
- new_entry->ref_count = 0;
-
- e_summary_shown_add_node (shown, FALSE, new_entry, NULL, TRUE, NULL);
- gtk_signal_emit (GTK_OBJECT (shown), shown_signals[ITEM_CHANGED]);
- g_print ("Added %s\n", entry->name);
-}
-
-static void
-add_clicked (GtkWidget *button,
- ESummaryShown *shown)
-{
- ESelectionModel *esm;
- ETree *et;
-
- et = e_tree_scrolled_get_tree (E_TREE_SCROLLED (shown->priv->all->etable));
- esm = e_tree_get_selection_model (et);
-
- e_tree_selection_model_foreach (E_TREE_SELECTION_MODEL (esm),
- maybe_move_to_shown, shown);
-}
-
-static void
-remove_from_shown (ETreePath path,
- gpointer closure)
-{
- ESummaryShown *shown = closure;
- ESummaryShownModelEntry *entry;
-
- entry = g_hash_table_lookup (shown->shown_model, path);
- g_return_if_fail (entry != NULL);
-
- e_summary_shown_remove_node (shown, FALSE, entry);
- gtk_signal_emit (GTK_OBJECT (shown), shown_signals[ITEM_CHANGED]);
-}
-
-static void
-remove_clicked (GtkWidget *button,
- ESummaryShown *shown)
-{
- ESelectionModel *esm;
- ETree *et;
-
- et = e_tree_scrolled_get_tree (E_TREE_SCROLLED (shown->priv->shown->etable));
- esm = e_tree_get_selection_model (et);
-
- e_tree_selection_model_foreach (E_TREE_SELECTION_MODEL (esm),
- remove_from_shown, shown);
-}
-
-static TableData *
-make_table (GHashTable *data_model,
- const char *title,
- GtkSignalFunc callback,
- gpointer closure)
-{
- TableData *td;
- ETreeMemory *etmm;
- ETree *tree;
- char *real_spec;
-
- td = g_new (TableData, 1);
- td->etm = e_tree_memory_callbacks_new (icon_at,
- column_count,
-
- NULL,
- NULL,
-
- NULL,
- NULL,
-
- value_at,
- NULL,
- is_editable,
-
- duplicate_value,
- free_value,
- initialise_value,
- value_is_empty,
- value_to_string,
-
- data_model);
- gtk_object_ref (GTK_OBJECT (td->etm));
- gtk_object_sink (GTK_OBJECT (td->etm));
-
- etmm = E_TREE_MEMORY (td->etm);
- e_tree_memory_set_expanded_default (etmm, TRUE);
-
- td->root = e_tree_memory_node_insert (etmm, NULL, 0, NULL);
-
- real_spec = g_strdup_printf (SPEC, title);
- td->etable = e_tree_scrolled_new (td->etm, NULL, real_spec, NULL);
- g_free (real_spec);
-
- tree = e_tree_scrolled_get_tree (E_TREE_SCROLLED (td->etable));
- e_tree_root_node_set_visible (tree, FALSE);
- gtk_signal_connect (GTK_OBJECT (tree), "selection-change",
- callback, closure);
-
- td->contents = NULL;
- return td;
-}
-
-static GtkWidget *
-construct_pixmap_button (const char *text,
- const char *image)
-{
- GtkWidget *box, *button, *pixmap, *label;
-
- box = gtk_hbox_new (FALSE, 1);
-
- pixmap = gnome_stock_pixmap_widget (NULL, image);
- gtk_box_pack_start (GTK_BOX (box), pixmap, FALSE, FALSE, 0);
-
- label = gtk_label_new (text);
- gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 0);
-
- button = gtk_button_new ();
- gtk_container_add (GTK_CONTAINER (button), box);
-
- gtk_widget_show_all (box);
-
- return button;
-}
-
-static void
-e_summary_shown_init (ESummaryShown *shown)
-{
- ESummaryShownPrivate *priv;
- GtkWidget *vbox;
-
- shown->shown_model = g_hash_table_new (NULL, NULL);
- shown->all_model = g_hash_table_new (NULL, NULL);
-
- priv = g_new (ESummaryShownPrivate, 1);
- shown->priv = priv;
-
- priv->all = make_table (shown->all_model, _("All"), GTK_SIGNAL_FUNC (all_selection_changed), shown);
-
- gtk_box_pack_start (GTK_BOX (shown), priv->all->etable, TRUE, TRUE, 0);
- gtk_widget_show (priv->all->etable);
-
- vbox = gtk_vbox_new (TRUE, 0);
- gtk_box_pack_start (GTK_BOX (shown), vbox, FALSE, FALSE, 0);
-
- /* Fixme: nice GFX version */
- priv->add = construct_pixmap_button (_("Add"), GNOME_STOCK_BUTTON_NEXT);
- gtk_widget_set_sensitive (priv->add, FALSE);
- gtk_box_pack_start (GTK_BOX (vbox), priv->add, TRUE, FALSE, 0);
- gtk_signal_connect (GTK_OBJECT (priv->add), "clicked",
- GTK_SIGNAL_FUNC (add_clicked), shown);
-
- /* Fixme: Ditto */
- priv->remove = construct_pixmap_button (_("Remove"), GNOME_STOCK_BUTTON_PREV);
- gtk_widget_set_sensitive (priv->remove, FALSE);
- gtk_box_pack_start (GTK_BOX (vbox), priv->remove, TRUE, FALSE, 0);
- gtk_signal_connect (GTK_OBJECT (priv->remove), "clicked",
- GTK_SIGNAL_FUNC (remove_clicked), shown);
-
- gtk_widget_show_all (vbox);
-
- priv->shown = make_table (shown->shown_model, _("Shown"), GTK_SIGNAL_FUNC (shown_selection_changed), shown);
-
- gtk_box_pack_start (GTK_BOX (shown), priv->shown->etable, TRUE, TRUE, 0);
- gtk_widget_show (priv->shown->etable);
-}
-
-E_MAKE_TYPE (e_summary_shown, "ESummaryShown", ESummaryShown,
- e_summary_shown_class_init, e_summary_shown_init, PARENT_TYPE);
-
-GtkWidget *
-e_summary_shown_new (void)
-{
- ESummaryShown *shown;
-
- shown = gtk_type_new (e_summary_shown_get_type ());
- return GTK_WIDGET (shown);
-}
-
-static ETreePath
-e_tree_model_node_append (ETreeModel *etm,
- ETreePath parent,
- gpointer data)
-{
- ETreeMemory *etmm;
- int position;
- ETreePath path;
-
- position = e_tree_model_node_get_children (etm, parent, NULL);
-
- etmm = E_TREE_MEMORY (etm);
- e_tree_memory_freeze (etmm);
- path = e_tree_memory_node_insert (etmm, parent, position, data);
- e_tree_memory_thaw (etmm);
-
- return path;
-}
-
-ETreePath
-e_summary_shown_add_node (ESummaryShown *shown,
- gboolean all,
- ESummaryShownModelEntry *entry,
- ETreePath parent,
- gboolean expanded,
- gpointer data)
-{
- TableData *td;
- ETreePath path;
- ETreeMemory *etmm;
- ETree *tree;
- GHashTable *model;
-
- g_return_val_if_fail (IS_E_SUMMARY_SHOWN (shown), NULL);
-
- if (all == TRUE) {
- td = shown->priv->all;
- model = shown->all_model;
- } else {
- td = shown->priv->shown;
- model = shown->shown_model;
- }
-
- if (parent == NULL) {
- parent = td->root;
- }
-
- etmm = E_TREE_MEMORY (td->etm);
- path = e_tree_model_node_append (td->etm, parent, data);
-
- tree = e_tree_scrolled_get_tree (E_TREE_SCROLLED (td->etable));
- e_tree_node_set_expanded (tree, path, expanded);
-
- entry->path = path;
-
- g_hash_table_insert (model, path, entry);
-
- if (all == FALSE) {
- /* Add the location to the list */
- td->contents = g_slist_prepend (td->contents, entry);
- }
-
- return path;
-}
-
-void
-e_summary_shown_remove_node (ESummaryShown *shown,
- gboolean all,
- ESummaryShownModelEntry *entry)
-{
- TableData *td;
- GHashTable *model;
- ETreeMemory *etmm;
-
- g_return_if_fail (IS_E_SUMMARY_SHOWN (shown));
-
- if (all == TRUE) {
- td = shown->priv->all;
- model = shown->all_model;
- } else {
- td = shown->priv->shown;
- model = shown->shown_model;
- }
-
- etmm = E_TREE_MEMORY (td->etm);
- e_tree_memory_node_remove (etmm, entry->path);
-
- g_hash_table_remove (model, entry->path);
-
- if (all == FALSE) {
- td->contents = g_slist_remove (td->contents, entry);
- }
-
-}
diff --git a/my-evolution/e-summary-shown.h b/my-evolution/e-summary-shown.h
deleted file mode 100644
index af9684c671..0000000000
--- a/my-evolution/e-summary-shown.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Iain Holmes <iain@ximian.com>
- *
- * Copyright 2002 Ximain, Inc. (www.ximian.com)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifndef __E_SUMMARY_SHOWN_H__
-#define __E_SUMMARY_SHOWN_H__
-
-#include <gtk/gtkhbox.h>
-#include <glib.h>
-#include <gal/e-table/e-tree-memory.h>
-
-#define E_SUMMARY_SHOWN_TYPE (e_summary_shown_get_type ())
-#define E_SUMMARY_SHOWN(obj) (GTK_CHECK_CAST ((obj), E_SUMMARY_SHOWN_TYPE, ESummaryShown))
-#define E_SUMMARY_SHOWN_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), E_SUMMARY_SHOWN_TYPE, ESummaryShownClass))
-#define IS_E_SUMMARY_SHOWN(obj) (GTK_CHECK_TYPE ((obj), E_SUMMARY_SHOWN_TYPE))
-#define IS_E_SUMMARY_SHOWN_CLASS(klass) (GTK_CHECK_TYPE ((klass), E_SUMMARY_SHOWN_TYPE))
-
-typedef struct _ESummaryShownPrivate ESummaryShownPrivate;
-typedef struct _ESummaryShownClass ESummaryShownClass;
-typedef struct _ESummaryShown ESummaryShown;
-
-typedef struct _ESummaryShownModelEntry {
- ETreePath path;
- char *name;
- char *location;
-
- gboolean showable;
- int ref_count;
-} ESummaryShownModelEntry;
-
-struct _ESummaryShown {
- GtkHBox parent;
-
- GHashTable *all_model;
- GHashTable *shown_model;
- ESummaryShownPrivate *priv;
-};
-
-struct _ESummaryShownClass {
- GtkHBoxClass parent_class;
-
- void (* item_changed) (ESummaryShown *shown);
-};
-
-GtkType e_summary_shown_get_type (void);
-GtkWidget *e_summary_shown_new (void);
-ETreePath e_summary_shown_add_node (ESummaryShown *shown,
- gboolean all,
- ESummaryShownModelEntry *entry,
- ETreePath parent,
- gboolean expanded,
- gpointer data);
-void e_summary_shown_remove_node (ESummaryShown *shown,
- gboolean all,
- ESummaryShownModelEntry *entry);
-#endif
diff --git a/my-evolution/e-summary-table.c b/my-evolution/e-summary-table.c
deleted file mode 100644
index 297da365e3..0000000000
--- a/my-evolution/e-summary-table.c
+++ /dev/null
@@ -1,441 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Iain Holmes <iain@ximian.com>
- *
- * Copyright 2002 Ximain, Inc. (www.ximian.com)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <string.h>
-
-#include <gtk/gtkvbox.h>
-#include <gtk/gtkenums.h>
-
-#include <gal/util/e-util.h>
-#include <gal/widgets/e-gui-utils.h>
-
-#include <gal/e-table/e-table-header.h>
-#include <gal/e-table/e-table-header-item.h>
-#include <gal/e-table/e-table-item.h>
-#include <gal/e-table/e-cell-text.h>
-#include <gal/e-table/e-cell-tree.h>
-#include <gal/e-table/e-cell-checkbox.h>
-#include <gal/e-table/e-table.h>
-#include <gal/e-table/e-tree-scrolled.h>
-#include <gal/e-table/e-tree-memory.h>
-#include <gal/e-table/e-tree-memory-callbacks.h>
-#include <gal/e-table/e-tree-table-adapter.h>
-
-#include <libgnome/gnome-i18n.h>
-#include <libgnomeui/gnome-init.h>
-
-#include "e-summary-table.h"
-#include "e-cell-tri.h"
-
-#define COLS 2
-
-#if 0 /* For translators */
-char *headers[COLS] = {
- N_("Shown"),
- N_("Name")
-};
-#endif
-
-#define SPEC "<ETableSpecification cursor-mode=\"line\" draw-focus=\"true\"> \
-<ETableColumn model_col=\"0\" _title=\"Shown\" minimum_width=\"20\" resizable=\"false\" cell=\"tricell\" compare=\"integer\"/> \
-<ETableColumn model_col=\"1\" _title=\"Name\" resizable=\"true\" minimum-width=\"32\" cell=\"render-name\" compare=\"string\"/> \
-<ETableState> \
-<column source=\"0\"/> \
-<column source=\"1\"/> \
-<grouping></grouping> \
-</ETableState> \
-</ETableSpecification>"
-
-#define PARENT_TYPE (gtk_vbox_get_type ())
-
-static GtkObjectClass *e_summary_table_parent_class;
-
-struct _ESummaryTablePrivate {
- GtkWidget *etable;
- ETableExtras *extras;
- ETreeTableAdapter *adapter;
- ETreeModel *etm;
-
- ETreePath root_node;
-};
-
-enum {
- ITEM_CHANGED,
- LAST_SIGNAL
-};
-static guint32 table_signals[LAST_SIGNAL] = { 0 };
-
-/* ETree callbacks */
-static GdkPixbuf *
-icon_at (ETreeModel *etm,
- ETreePath path,
- void *model_data)
-{
- /* No icon, since the cell tree renderer takes care of +/- */
- return NULL;
-}
-
-static int
-column_count (ETreeModel *etm,
- void *data)
-{
- return COLS;
-}
-
-static void *
-duplicate_value (ETreeModel *etm,
- int col,
- const void *value,
- void *data)
-{
- switch (col) {
- case 0:
- return (void *) value;
-
- case 1:
- return g_strdup (value);
-
- default:
- g_assert_not_reached ();
- }
-
- return NULL;
-}
-
-static void
-free_value (ETreeModel *etm,
- int col,
- void *value,
- void *data)
-{
- if (col == 1) {
- g_free (value);
- }
-}
-
-static void *
-initialise_value (ETreeModel *etm,
- int col,
- void *data)
-{
- switch (col) {
- case 0:
- return GINT_TO_POINTER (1);
-
- case 1:
- return g_strdup ("2");
-
- default:
- g_assert_not_reached ();
-
- }
-
- return NULL;
-}
-
-static gboolean
-value_is_empty (ETreeModel *etm,
- int col,
- const void *value,
- void *data)
-{
- if (col == 1) {
- return !(value && *(char *)value);
- }
-
- return FALSE;
-}
-
-static char *
-value_to_string (ETreeModel *etm,
- int col,
- const void *value,
- void *data)
-{
- switch (col) {
- case 0:
- return g_strdup_printf ("%d", GPOINTER_TO_INT (value));
-
- case 1:
- return g_strdup (value);
-
- default:
- g_assert_not_reached ();
- }
-
- return NULL;
-}
-
-static void *
-value_at (ETreeModel *etm,
- ETreePath path,
- int col,
- void *model_data)
-{
- GHashTable *table;
- ESummaryTable *est = E_SUMMARY_TABLE (model_data);
- ESummaryTableModelEntry *entry;
-
- table = est->model;
- if (e_tree_model_node_is_root (etm, path)) {
- if (col == 1) {
- return "<Root>";
- } else {
- return GINT_TO_POINTER (0);
- }
- } else {
- entry = g_hash_table_lookup (table, path);
- g_return_val_if_fail (entry != NULL, NULL);
-
- if (col == 1) {
- return entry->name;
-
- } else {
- if (entry->editable == TRUE) {
- return GINT_TO_POINTER (entry->shown ? 2 : 1);
- } else {
- return GINT_TO_POINTER (0);
- }
- }
- }
-}
-
-static void
-set_value_at (ETreeModel *etm,
- ETreePath path,
- int col,
- const void *val,
- void *model_data)
-{
- GHashTable *table;
- ESummaryTable *est = E_SUMMARY_TABLE (model_data);
- ESummaryTableModelEntry *entry;
-
- if (e_tree_model_node_is_root (etm, path)) {
- return;
- }
-
- if (col != 0) {
- return;
- }
-
- table = est->model;
- entry = g_hash_table_lookup (table, path);
- g_return_if_fail (entry != NULL);
-
- if (entry->editable == TRUE) {
- entry->shown = GPOINTER_TO_INT (val) == 1 ? FALSE : TRUE;
- gtk_signal_emit (GTK_OBJECT (est), table_signals[ITEM_CHANGED], path);
- }
-}
-
-static gboolean
-is_editable (ETreeModel *etm,
- ETreePath path,
- int col,
- void *model_data)
-{
- GHashTable *table;
- ESummaryTable *est = (ESummaryTable *) model_data;
- ESummaryTableModelEntry *entry;
-
- if (e_tree_model_node_is_root (etm, path)) {
- return FALSE;
- }
-
- if (col == 1) {
- return FALSE;
- }
-
- table = est->model;
- entry = g_hash_table_lookup (table, path);
- g_return_val_if_fail (entry != NULL, FALSE);
-
- return entry->editable;
-}
-
-/* GtkObject callbacks */
-
-static void
-free_model_entry (gpointer key,
- gpointer value,
- gpointer user_data)
-{
- ESummaryTableModelEntry *entry;
-
- entry = value;
- g_free (entry->location);
- g_free (entry->name);
- g_free (entry);
-}
-
-static void
-destroy (GtkObject *object)
-{
- ESummaryTable *est;
- ESummaryTablePrivate *priv;
-
- est = E_SUMMARY_TABLE (object);
- priv = est->priv;
-
- if (priv == NULL) {
- return;
- }
-
- /* What do I need to free? */
- g_hash_table_foreach (est->model, free_model_entry, NULL);
- g_hash_table_destroy (est->model);
- est->model = NULL;
-
- g_free (priv);
- est->priv = NULL;
-
- e_summary_table_parent_class->destroy (object);
-}
-
-static void
-e_summary_table_class_init (GtkObjectClass *object_class)
-{
- object_class->destroy = destroy;
-
- e_summary_table_parent_class = gtk_type_class (PARENT_TYPE);
-
- table_signals[ITEM_CHANGED] = gtk_signal_new ("item-changed",
- GTK_RUN_LAST,
- object_class->type,
- GTK_SIGNAL_OFFSET (ESummaryTableClass, item_changed),
- gtk_marshal_NONE__POINTER,
- GTK_TYPE_NONE, 1,
- GTK_TYPE_POINTER);
- gtk_object_class_add_signals (object_class, table_signals, LAST_SIGNAL);
-}
-
-static void
-e_summary_table_init (ESummaryTable *est)
-{
- ESummaryTablePrivate *priv;
- ETreeMemory *etmm;
- ECell *cell;
- ETree *tree;
-
- priv = g_new (ESummaryTablePrivate, 1);
- est->priv = priv;
-
- priv->etm = e_tree_memory_callbacks_new (icon_at,
- column_count,
-
- NULL,
- NULL,
-
- NULL,
- NULL,
-
- value_at,
- set_value_at,
- is_editable,
-
- duplicate_value,
- free_value,
- initialise_value,
- value_is_empty,
- value_to_string,
- est);
- gtk_object_ref (GTK_OBJECT (priv->etm));
- gtk_object_sink (GTK_OBJECT (priv->etm));
-
- etmm = E_TREE_MEMORY (priv->etm);
- e_tree_memory_set_expanded_default (etmm, TRUE);
-
- priv->root_node = e_tree_memory_node_insert (etmm, NULL, 0, est);
-
- cell = e_cell_text_new (NULL, GTK_JUSTIFY_LEFT);
- priv->extras = e_table_extras_new ();
- e_table_extras_add_cell (priv->extras, "render-name", e_cell_tree_new (NULL, NULL, FALSE, cell));
- e_table_extras_add_cell (priv->extras, "tricell", e_cell_tri_new ());
-
- priv->etable = e_tree_scrolled_new (priv->etm, priv->extras, SPEC, NULL);
- if (priv->etable == NULL) {
- g_warning ("Could not create ETable for ESummaryTable");
- return;
- }
-
- tree = e_tree_scrolled_get_tree (E_TREE_SCROLLED (priv->etable));
- e_tree_root_node_set_visible (tree, FALSE);
-
- gtk_box_pack_start (GTK_BOX (est), GTK_WIDGET (priv->etable),
- TRUE, TRUE, 0);
- gtk_widget_show (GTK_WIDGET (priv->etable));
-}
-
-E_MAKE_TYPE (e_summary_table, "ESummaryTable", ESummaryTable,
- e_summary_table_class_init, e_summary_table_init, PARENT_TYPE);
-
-GtkWidget *
-e_summary_table_new (GHashTable *model)
-{
- ESummaryTable *table;
-
- table = gtk_type_new (e_summary_table_get_type ());
- table->model = model;
-
- return GTK_WIDGET (table);
-}
-
-ETreePath
-e_summary_table_add_node (ESummaryTable *table,
- ETreePath path,
- int position,
- gpointer node_data)
-{
- ETreeMemory *etmm;
- ETreePath p;
-
- g_return_val_if_fail (IS_E_SUMMARY_TABLE (table), NULL);
-
- if (path == NULL) {
- path = table->priv->root_node;
- }
-
- etmm = E_TREE_MEMORY (table->priv->etm);
- e_tree_memory_freeze (etmm);
- p = e_tree_memory_node_insert (etmm, path, position, node_data);
- e_tree_memory_thaw (etmm);
-
- return p;
-}
-
-guint
-e_summary_table_get_num_children (ESummaryTable *table,
- ETreePath path)
-{
- if (path == NULL) {
- return e_tree_model_node_get_children (table->priv->etm,
- table->priv->root_node, NULL);
- } else {
- return e_tree_model_node_get_children (table->priv->etm, path, NULL);
- }
-}
diff --git a/my-evolution/e-summary-table.h b/my-evolution/e-summary-table.h
deleted file mode 100644
index 859f8f7ec9..0000000000
--- a/my-evolution/e-summary-table.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Iain Holmes <iain@ximian.com>
- *
- * Copyright 2002 Ximain, Inc. (www.ximian.com)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
- *
- */
-
-#ifndef __E_SUMMARY_TABLE_H__
-#define __E_SUMMARY_TABLE_H__
-
-#include <gtk/gtkvbox.h>
-#include <glib.h>
-#include <gal/e-table/e-tree-memory.h>
-
-#define E_SUMMARY_TABLE_TYPE (e_summary_table_get_type ())
-#define E_SUMMARY_TABLE(obj) (GTK_CHECK_CAST ((obj), E_SUMMARY_TABLE_TYPE, ESummaryTable))
-#define E_SUMMARY_TABLE_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), E_SUMMARY_TABLE_TYPE, ESummaryTableClass))
-#define IS_E_SUMMARY_TABLE(obj) (GTK_CHECK_TYPE ((obj), E_SUMMARY_TABLE_TYPE))
-#define IS_E_SUMMARY_TABLE_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), E_SUMMARY_TABLE_TYPE))
-
-typedef struct _ESummaryTablePrivate ESummaryTablePrivate;
-typedef struct _ESummaryTableClass ESummaryTableClass;
-typedef struct _ESummaryTable ESummaryTable;
-
-typedef struct _ESummaryTableModelEntry {
- ETreePath path;
-
- char *location;
-
- gboolean editable;
- gboolean removable;
-
- gboolean shown;
- char *name;
-} ESummaryTableModelEntry;
-
-struct _ESummaryTable {
- GtkVBox parent;
-
- GHashTable *model;
- ESummaryTablePrivate *priv;
-};
-
-struct _ESummaryTableClass {
- GtkVBoxClass parent_class;
-
- void (* item_changed) (ESummaryTable *table,
- ETreePath path);
-};
-
-GtkType e_summary_table_get_type (void);
-GtkWidget *e_summary_table_new (GHashTable *model);
-ETreePath e_summary_table_add_node (ESummaryTable *est,
- ETreePath path,
- int position,
- gpointer node_data);
-guint e_summary_table_get_num_children (ESummaryTable *est,
- ETreePath path);
-#endif
diff --git a/my-evolution/e-summary-tasks.c b/my-evolution/e-summary-tasks.c
deleted file mode 100644
index 4a96e565cb..0000000000
--- a/my-evolution/e-summary-tasks.c
+++ /dev/null
@@ -1,430 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-summary-tasks.c
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Iain Holmes
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <gnome.h>
-#include <gal/widgets/e-unicode.h>
-
-#include "e-summary-tasks.h"
-#include "e-summary.h"
-#include <cal-client/cal-client.h>
-#include <cal-util/timeutil.h>
-
-#include <bonobo/bonobo-exception.h>
-#include <bonobo/bonobo-object.h>
-#include <bonobo/bonobo-moniker-util.h>
-#include <bonobo-conf/bonobo-config-database.h>
-#include <liboaf/liboaf.h>
-
-struct _ESummaryTasks {
- CalClient *client;
-
- char *html;
-};
-
-const char *
-e_summary_tasks_get_html (ESummary *summary)
-{
- if (summary->tasks == NULL) {
- return NULL;
- }
-
- return summary->tasks->html;
-}
-
-/* list_sort_merge, and list_sort are copied from GNOME-VFS.
- Author: Sven Oliver <sven.over@ob.kamp.net>
- Modified by Ettore Perazzoli <ettore@comm2000.it> to let the compare
- functions get an additional gpointer parameter.
-
- Included here as using gnome-vfs for 1 20 line function
- seems a bit of overkill.
-*/
-
-typedef gint (* CalSummaryListCompareFunc) (gconstpointer a,
- gconstpointer b,
- gpointer data);
-static GList *
-cal_list_sort_merge (GList *l1,
- GList *l2,
- CalSummaryListCompareFunc compare_func,
- gpointer data)
-{
- GList list, *l, *lprev;
-
- l = &list;
- lprev = NULL;
-
- while (l1 && l2) {
- if (compare_func (l1->data, l2->data, data) < 0) {
- l->next = l1;
- l = l->next;
- l->prev = lprev;
- lprev = l;
- l1 = l1->next;
- } else {
- l->next = l2;
- l = l->next;
- l->prev = lprev;
- lprev = l;
- l2 = l2->next;
- }
- }
-
- l->next = l1 ? l1 : l2;
- l->next->prev = l;
-
- return list.next;
-}
-
-static GList *
-cal_list_sort (GList *list,
- CalSummaryListCompareFunc compare_func,
- gpointer data)
-{
- GList *l1, *l2;
-
- if (!list)
- return NULL;
- if (!list->next)
- return list;
-
- l1 = list;
- l2 = list->next;
-
- while ((l2 = l2->next) != NULL) {
- if ((l2 = l2->next) == NULL)
- break;
- l1 = l1->next;
- }
-
- l2 = l1->next;
- l1->next = NULL;
-
- return cal_list_sort_merge (cal_list_sort (list, compare_func, data),
- cal_list_sort (l2, compare_func, data),
- compare_func, data);
-}
-
-static int
-sort_uids (gconstpointer a,
- gconstpointer b,
- gpointer user_data)
-{
- CalComponent *comp_a, *comp_b;
- CalClient *client = user_data;
- CalClientGetStatus status;
- /* let undefined priorities be lowest ones */
- int lowest = 10, rv;
- int *pri_a, *pri_b;
-
- /* a after b then return > 0 */
-
- status = cal_client_get_object (client, a, &comp_a);
- if (status != CAL_CLIENT_GET_SUCCESS)
- return -1;
-
- status = cal_client_get_object (client, b, &comp_b);
- if (status != CAL_CLIENT_GET_SUCCESS)
- return 1;
-
- cal_component_get_priority (comp_a, &pri_a);
- cal_component_get_priority (comp_b, &pri_b);
-
- if (pri_a == NULL)
- pri_a = &lowest;
- if (pri_b == NULL)
- pri_b = &lowest;
-
- rv = *pri_a - *pri_b;
-
- if (pri_a != &lowest)
- cal_component_free_priority (pri_a);
- if (pri_b != &lowest)
- cal_component_free_priority (pri_b);
-
- return rv;
-}
-
-static GList *
-get_todays_uids (ESummary *summary,
- CalClient *client,
- GList *uids)
-{
- GList *today = NULL, *p;
- time_t todays_end, todays_start, t;
-
- t = time (NULL);
- todays_start = time_day_begin_with_zone (t, summary->tz);
- todays_end = time_day_end_with_zone (t, summary->tz);
-
- for (p = uids; p; p = p->next) {
- char *uid;
- CalComponent *comp;
- CalClientGetStatus status;
- CalComponentDateTime due;
- icaltimezone *zone;
- time_t endt;
-
- uid = p->data;
- status = cal_client_get_object (client, uid, &comp);
- if (status != CAL_CLIENT_GET_SUCCESS) {
- continue;
- }
-
- cal_component_get_due (comp, &due);
-
- cal_client_get_timezone (client, due.tzid, &zone);
- if (due.value != 0) {
- icaltimezone_convert_time (due.value, zone, summary->tz);
- endt = icaltime_as_timet (*due.value);
-
- if (endt >= todays_start && endt <= todays_end) {
- today = g_list_append (today, g_strdup (uid));
- }
- }
- cal_component_free_datetime (&due);
- }
-
- if (today == NULL) {
- return NULL;
- }
-
- today = cal_list_sort (today, sort_uids, client);
- return today;
-}
-
-static gboolean
-generate_html (gpointer data)
-{
- ESummary *summary = data;
- ESummaryTasks *tasks = summary->tasks;
- GList *uids, *l;
- GString *string;
- char *tmp;
- time_t t;
-
- /* Set the default timezone on the server. */
- if (summary->tz) {
- cal_client_set_default_timezone (tasks->client,
- summary->tz);
- }
-
- t = time (NULL);
-
- uids = cal_client_get_uids (tasks->client, CALOBJ_TYPE_TODO);
- if (summary->preferences->show_tasks == E_SUMMARY_CALENDAR_TODAYS_TASKS && uids != NULL) {
- GList *tmp;
-
- tmp = get_todays_uids (summary, tasks->client, uids);
- cal_obj_uid_list_free (uids);
-
- uids = tmp;
- }
-
- if (uids == NULL) {
- char *s1, *s2;
-
- s1 = e_utf8_from_locale_string (_("Tasks"));
- s2 = e_utf8_from_locale_string (_("No tasks"));
- g_free (tasks->html);
- tasks->html = g_strconcat ("<dl><dt><img src=\"myevo-post-it.png\" align=\"middle\" "
- "alt=\"\" width=\"48\" height=\"48\"> <b><a href=\"evolution:/local/Tasks\">",
- s1, "</a></b></dt><dd><b>", s2, "</b></dd></dl>", NULL);
- g_free (s1);
- g_free (s2);
-
-/* e_summary_draw (summary); */
- return FALSE;
- } else {
- char *s;
-
- uids = cal_list_sort (uids, sort_uids, tasks->client);
- string = g_string_new ("<dl><dt><img src=\"myevo-post-it.png\" align=\"middle\" "
- "alt=\"\" width=\"48\" height=\"48\"> <b><a href=\"evolution:/local/Tasks\">");
- s = e_utf8_from_locale_string (_("Tasks"));
- g_string_append (string, s);
- g_free (s);
- g_string_append (string, "</a></b></dt><dd>");
- for (l = uids; l; l = l->next) {
- char *uid;
- CalComponent *comp;
- CalComponentText text;
- CalClientGetStatus status;
- struct icaltimetype *completed;
-
- uid = l->data;
- status = cal_client_get_object (tasks->client, uid, &comp);
- if (status != CAL_CLIENT_GET_SUCCESS) {
- continue;
- }
-
- cal_component_get_summary (comp, &text);
- cal_component_get_completed (comp, &completed);
-
- if (completed == NULL) {
- tmp = g_strdup_printf ("<img align=\"middle\" src=\"task.png\" "
- "alt=\"\" width=\"16\" height=\"16\"> &#160; "
- "<font size=\"-1\"><a href=\"tasks:/%s\">%s</a></font><br>",
- uid, text.value ? text.value : _("(No Description)"));
- } else {
-#if 0
- tmp = g_strdup_printf ("<img align=\"middle\" src=\"task.xpm\" "
- "alt=\"\" width=\"16\" height=\"16\"> &#160; "
- "<font size=\"-1\"><strike><a href=\"evolution:/local/Tasks\">%s</a></strike></font><br>",
- text.value);
-#endif
- cal_component_free_icaltimetype (completed);
- gtk_object_unref (GTK_OBJECT (comp));
- continue;
- }
-
- gtk_object_unref (GTK_OBJECT (comp));
- g_string_append (string, tmp);
- g_free (tmp);
- }
-
- cal_obj_uid_list_free (uids);
- g_string_append (string, "</dd></dl>");
- }
-
- if (tasks->html) {
- g_free (tasks->html);
- }
- tasks->html = string->str;
- g_string_free (string, FALSE);
-
-/* e_summary_draw (summary); */
- return FALSE;
-}
-
-static void
-cal_opened_cb (CalClient *client,
- CalClientOpenStatus status,
- ESummary *summary)
-{
- if (status == CAL_CLIENT_OPEN_SUCCESS) {
- g_idle_add (generate_html, summary);
- } else {
- /* Need to work out what to do if there's an error */
- }
-}
-static void
-obj_changed_cb (CalClient *client,
- const char *uid,
- gpointer data)
-{
- g_idle_add (generate_html, data);
-}
-
-static void
-e_summary_tasks_protocol (ESummary *summary,
- const char *uri,
- void *closure)
-{
- ESummaryTasks *tasks;
- CORBA_Environment ev;
- const char *comp_uri;
- GNOME_Evolution_Calendar_CompEditorFactory factory;
-
- tasks = (ESummaryTasks *) closure;
-
- comp_uri = cal_client_get_uri (tasks->client);
-
- /* Get the factory */
- CORBA_exception_init (&ev);
- factory = oaf_activate_from_id ("OAFIID:GNOME_Evolution_Calendar_CompEditorFactory", 0, NULL, &ev);
- if (BONOBO_EX (&ev)) {
- g_message ("%s: Could not activate the component editor factory (%s)", __FUNCTION__,
- CORBA_exception_id (&ev));
- CORBA_exception_free (&ev);
- return;
- }
-
- GNOME_Evolution_Calendar_CompEditorFactory_editExisting (factory, comp_uri, (char *)uri + 7, &ev);
-
- if (BONOBO_EX (&ev)) {
- g_message ("%s: Execption while editing the component (%s)", __FUNCTION__,
- CORBA_exception_id (&ev));
- }
-
- CORBA_exception_free (&ev);
- bonobo_object_release_unref (factory, NULL);
-}
-
-void
-e_summary_tasks_init (ESummary *summary)
-{
- ESummaryTasks *tasks;
- gboolean result;
-
- g_return_if_fail (summary != NULL);
-
- tasks = g_new (ESummaryTasks, 1);
- summary->tasks = tasks;
- tasks->html = NULL;
-
- tasks->client = cal_client_new ();
- if (tasks->client == NULL) {
- g_warning ("Error making the client");
- return;
- }
-
- gtk_signal_connect (GTK_OBJECT (tasks->client), "cal-opened",
- GTK_SIGNAL_FUNC (cal_opened_cb), summary);
- gtk_signal_connect (GTK_OBJECT (tasks->client), "obj-updated",
- GTK_SIGNAL_FUNC (obj_changed_cb), summary);
- gtk_signal_connect (GTK_OBJECT (tasks->client), "obj-removed",
- GTK_SIGNAL_FUNC (obj_changed_cb), summary);
-
- result = cal_client_open_default_tasks (tasks->client, FALSE);
- if (result == FALSE) {
- g_message ("Open tasks failed");
- }
-
- e_summary_add_protocol_listener (summary, "tasks", e_summary_tasks_protocol, tasks);
-}
-
-void
-e_summary_tasks_reconfigure (ESummary *summary)
-{
- generate_html (summary);
-}
-
-void
-e_summary_tasks_free (ESummary *summary)
-{
- ESummaryTasks *tasks;
-
- g_return_if_fail (summary != NULL);
- g_return_if_fail (IS_E_SUMMARY (summary));
-
- tasks = summary->tasks;
- gtk_object_unref (GTK_OBJECT (tasks->client));
- g_free (tasks->html);
-
- g_free (tasks);
- summary->tasks = NULL;
-}
diff --git a/my-evolution/e-summary-tasks.h b/my-evolution/e-summary-tasks.h
deleted file mode 100644
index a9d3d6b698..0000000000
--- a/my-evolution/e-summary-tasks.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-summary-tasks.h
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Iain Holmes
- */
-
-#ifndef __E_SUMMARY_TASKS_H__
-#define __E_SUMMARY_TASKS_H__
-
-#include "e-summary-type.h"
-
-typedef struct _ESummaryTasks ESummaryTasks;
-
-const char *e_summary_tasks_get_html (ESummary *summary);
-void e_summary_tasks_init (ESummary *summary);
-void e_summary_tasks_reconfigure (ESummary *summary);
-void e_summary_tasks_free (ESummary *summary);
-
-#endif
diff --git a/my-evolution/e-summary-type.h b/my-evolution/e-summary-type.h
deleted file mode 100644
index 8a40dfe991..0000000000
--- a/my-evolution/e-summary-type.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-summary-type.h
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Iain Holmes
- */
-
-#ifndef __E_SUMMARY_TYPE_H__
-#define __E_SUMMARY_TYPE_H__
-
-typedef struct _ESummary ESummary;
-
-#endif
diff --git a/my-evolution/e-summary-weather.c b/my-evolution/e-summary-weather.c
deleted file mode 100644
index c5396e7225..0000000000
--- a/my-evolution/e-summary-weather.c
+++ /dev/null
@@ -1,829 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-summary-weather.c
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Iain Holmes
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <glib.h>
-#include <gtk/gtkctree.h>
-#include <gtk/gtkmain.h>
-
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-i18n.h>
-#include <libgnome/gnome-config.h>
-
-#include <gal/widgets/e-unicode.h>
-
-#include "e-summary.h"
-#include "e-summary-shown.h"
-#include "e-summary-weather.h"
-#include "weather.h"
-#include "metar.h"
-
-struct _ESummaryWeather {
- ESummaryConnection *connection;
- GList *weathers;
-
- char *html;
- guint32 timeout;
-
- gboolean online;
- gboolean errorshown;
-};
-
-static GHashTable *locations_hash = NULL;
-
-char *
-e_summary_weather_get_html (ESummary *summary)
-{
- GList *weathers;
- GString *string;
- char *html;
- char *s;
-
- if (summary->weather == NULL) {
- return NULL;
- }
-
- string = g_string_new ("<dl><img src=\"ico-weather.png\" align=\"middle\" "
- "alt=\"\" width=\"48\" height=\"48\"><b>"
- "<a href=\"http://www.metoffice.gov.uk\">");
- s = e_utf8_from_locale_string (_("My Weather"));
- g_string_append (string, s);
- g_free (s);
- g_string_append (string, "</a></b>");
- for (weathers = summary->weather->weathers; weathers; weathers = weathers->next) {
- if (((Weather *)weathers->data)->html == NULL) {
- continue;
- }
-
- g_string_append (string, ((Weather *)weathers->data)->html);
- }
-
- g_string_append (string, "</dl>");
-
- html = string->str;
- g_string_free (string, FALSE);
-
- return html;
-}
-
-static char *
-make_url (const char *code)
-{
- return g_strdup_printf ("http://weather.noaa.gov/cgi-bin/mgetmetar.pl?cccc=%s", code);
-}
-
-static char *
-make_anchor (const char *name, const char *code)
-{
- char *url, *anchor;
-
- url = make_url (code);
- anchor = g_strdup_printf ("<a href=\"%s\">%s</a>", url, name);
- g_free (url);
-
- return anchor;
-}
-
-static void
-weather_make_html (Weather *w)
-{
- GString *string;
- ESummaryWeatherLocation *location;
- char *sky, *temp, *cond, *s;
- const char *icon_name;
-
- icon_name = icon_from_weather (w);
- string = g_string_new ("");
- g_string_sprintf (string, "<dd><img align=\"middle\" "
- "src=\"%s\" width=\"16\" height=\"16\">&#160;<b>",
- icon_name);
- location = g_hash_table_lookup (locations_hash, w->location);
-#if 0
- if (location == NULL) {
- url = make_anchor (w->location, w->location);
- } else {
- url = make_anchor (location->name, w->location);
- }
-#endif
- if (location == NULL) {
- g_string_append (string, w->location);
- } else {
- g_string_append (string, location->name);
- }
-
-#if 0
- g_string_append (string, url);
- g_free (url);
-#endif
-
- g_string_append (string, "</b>:<blockquote><font size=\"-1\">");
- sky = (char *) weather_sky_string (w);
- temp = weather_temp_string (w);
- cond = (char *) weather_conditions_string (w);
-
- s = e_utf8_from_locale_string (sky);
- g_string_append (string, s);
- g_free (s);
- g_string_append_c (string, ' ');
- s = e_utf8_from_locale_string (cond);
- g_string_append (string, s);
- g_free (s);
- g_string_append_c (string, ' ');
- s = e_utf8_from_locale_string (temp);
- g_string_append (string, s);
- g_free (s);
- g_free (temp);
-
-#if 0
- g_string_append (string, "<font size=\"-1\">");
-
- uri = g_strdup_printf ("<a href=\"weather://%p\">", w);
- g_string_append (string, uri);
- g_free (uri);
- g_string_append (string, "(More)</a></font></font></blockquote></dd>");
-#else
- g_string_append (string, "</font></blockquote></dd>");
-#endif
- if (w->html != NULL) {
- g_free (w->html);
- }
- w->html = string->str;
- g_string_free (string, FALSE);
-
- e_summary_draw (w->summary);
-}
-
-static ESummaryWeatherLocation *
-weather_location_new (char **locdata)
-{
- ESummaryWeatherLocation *location;
-
- location = g_new (ESummaryWeatherLocation, 1);
- location->name = g_strdup (locdata[0]);
- location->code = g_strdup (locdata[1]);
- location->zone = g_strdup (locdata[2]);
- location->radar = g_strdup (locdata[3]);
-
- return location;
-}
-
-static void
-parse_metar_token (const char *token,
- gboolean in_comment,
- Weather *w)
-{
- if (in_comment == FALSE) {
- if (metar_tok_time ((char *) token, w)) {
- return;
- } else if (metar_tok_wind ((char *) token, w)) {
- return;
- } else if (metar_tok_vis ((char *) token, w)) {
- return;
- } else if (metar_tok_cloud ((char *) token, w)) {
- return;
- } else if (metar_tok_temp ((char *) token, w)) {
- return;
- } else if (metar_tok_pres ((char *) token, w)) {
- return;
- } else if (metar_tok_cond ((char *) token, w)) {
- return;
- }
- }
-}
-
-static void
-parse_metar (const char *metar,
- Weather *w)
-{
- char *metar_dup;
- char **toks;
- gint ntoks;
- gint i;
- gboolean in_remark = FALSE;
-
- metar_dup = g_strdup (metar + 6);
-
- metar_init_re ();
-
- toks = g_strsplit (metar, " ", 0);
-
- for (ntoks = 0; toks[ntoks]; ntoks++) {
- if (strcmp (toks[ntoks], "RMK") == 0) {
- in_remark = TRUE;
- }
- }
-
- for (i = ntoks - 1; i >= 0; i--) {
- if (*toks[i] != '\0') {
- if (strcmp (toks[i], "RMK") == 0) {
- in_remark = FALSE;
- } else {
- parse_metar_token (toks[i], in_remark, w);
- }
- }
- }
-
- g_strfreev (toks);
- g_free (metar_dup);
- weather_make_html (w);
-}
-
-static void
-message_finished (SoupMessage *msg,
- gpointer userdata)
-{
- Weather *w = (Weather *) userdata;
- ESummary *summary;
- char *html, *metar, *end;
- char *search_str;
-
- summary = w->summary;
- if (summary->weather->connection->callback) {
- ESummaryConnection *connection = summary->weather->connection;
- connection->callback (summary, connection->callback_closure);
- }
-
- if (SOUP_MESSAGE_IS_ERROR (msg)) {
- char *mess;
- ESummaryWeatherLocation *location;
-
- g_warning ("Message failed: %d\n%s", msg->errorcode,
- msg->errorphrase);
- w->message = NULL;
-
- location = g_hash_table_lookup (locations_hash, w->location);
-
- mess = g_strdup_printf ("<br><b>%s %s</b></br>",
- _("There was an error downloading data for"),
- location ? location->name : w->location);
-
- w->html = e_utf8_from_locale_string (mess);
- g_free (mess);
-
- e_summary_draw (w->summary);
- return;
- }
-
- html = g_strdup (msg->response.body);
- w->message = NULL;
-
- /* Find the metar data */
- search_str = g_strdup_printf ("\n%s", w->location);
- metar = strstr (html, search_str);
- if (metar == NULL) {
- g_free (search_str);
- return;
- }
-
- metar++;
- end = strchr (metar, '\n');
- if (end == NULL) {
- g_free (search_str);
- return;
- }
- *end = '\0';
-
- parse_metar (metar, w);
- g_free (search_str);
- return;
-}
-
-gboolean
-e_summary_weather_update (ESummary *summary)
-{
- GList *w;
-
- if (summary->weather->online == FALSE) {
- g_warning ("%s: Repolling but offline", __FUNCTION__);
- return TRUE;
- }
-
- summary->weather->errorshown = FALSE;
- for (w = summary->weather->weathers; w; w = w->next) {
- SoupContext *context;
- char *uri;
- Weather *weather = w->data;
-
- if (weather->message != NULL) {
- continue;
- }
-
- uri = g_strdup_printf ("http://weather.noaa.gov/cgi-bin/mgetmetar.pl?cccc=%s", weather->location);
- context = soup_context_get (uri);
- g_print ("Updating %s\n", uri);
- if (context == NULL) {
- g_warning ("Invalid URL: %s", uri);
- soup_context_unref (context);
- g_free (uri);
- continue;
- }
-
- weather->message = soup_message_new (context, SOUP_METHOD_GET);
- soup_context_unref (context);
- soup_message_queue (weather->message, message_finished, weather);
-
- g_free (uri);
- }
-
- return TRUE;
-}
-
-static void
-weather_free (Weather *w)
-{
- g_return_if_fail (w != NULL);
-
- if (w->message != NULL) {
- soup_message_cancel (w->message);
- }
-
- g_free (w->location);
- g_free (w->html);
- g_free (w);
-}
-
-static void
-e_summary_weather_add_location (ESummary *summary,
- const char *location)
-{
- Weather *w;
-
- w = g_new0 (Weather, 1);
- w->summary = summary;
- w->location = g_strdup (location);
- summary->weather->weathers = g_list_append (summary->weather->weathers, w);
-}
-
-static gboolean
-e_summary_weather_init_locations (void)
-{
- char *key, *path;
- int nregions, iregions;
- char **regions;
-
- if (locations_hash != NULL) {
- return TRUE;
- }
-
- locations_hash = g_hash_table_new (g_str_hash, g_str_equal);
- path = g_strdup (EVOLUTION_DATADIR "/evolution/Locations");
-
- key = g_strdup_printf ("=%s=/", path);
- g_free (path);
-
- gnome_config_push_prefix (key);
- g_free (key);
-
- gnome_config_get_vector ("Main/regions", &nregions, &regions);
- for (iregions = nregions - 1; iregions >= 0; iregions--) {
- int nstates, istates;
- char **states;
- char *region_name;
- char *region_name_key;
- char *states_key;
-
- region_name_key = g_strconcat (regions[iregions], "/name", NULL);
- states_key = g_strconcat (regions[iregions], "/states", NULL);
- region_name = gnome_config_get_string (region_name_key);
-
- gnome_config_get_vector (states_key, &nstates, &states);
-
- for (istates = nstates - 1; istates >= 0; istates--) {
- void *iter;
- char *iter_key, *iter_val;
- char *state_path, *state_name_key, *state_name;
-
- state_path = g_strconcat (regions[iregions], "_", states[istates], "/", NULL);
- state_name_key = g_strconcat (state_path, "name", NULL);
- state_name = gnome_config_get_string (state_name_key);
-
- iter = gnome_config_init_iterator (state_path);
-
- while ((iter = gnome_config_iterator_next (iter, &iter_key, &iter_val)) != NULL) {
- if (strstr (iter_key, "loc") != NULL) {
- char **locdata;
- int nlocdata;
- ESummaryWeatherLocation *location;
-
- gnome_config_make_vector (iter_val,
- &nlocdata,
- &locdata);
- g_return_val_if_fail (nlocdata == 4, FALSE);
-
- if (!g_hash_table_lookup (locations_hash, locdata[1])) {
- location = weather_location_new (locdata);
- g_hash_table_insert (locations_hash,
- g_strdup (locdata[1]),
- location);
- }
-
- g_strfreev (locdata);
- }
-
- g_free (iter_key);
- g_free (iter_val);
- }
-
- g_free (state_name);
- g_free (state_path);
- g_free (state_name_key);
- }
-
- g_strfreev (states);
- g_free (region_name);
- g_free (region_name_key);
- g_free (states_key);
- }
-
- g_strfreev (regions);
- gnome_config_pop_prefix ();
-
- return TRUE;
-}
-
-static void
-e_summary_weather_protocol (ESummary *summary,
- const char *uri,
- void *closure)
-{
-
-}
-
-static int
-e_summary_weather_count (ESummary *summary,
- void *data)
-{
- ESummaryWeather *weather;
- GList *p;
- int count = 0;
-
- weather = summary->weather;
- for (p = weather->weathers; p; p = p->next) {
- Weather *w = p->data;
-
- if (w->message != NULL) {
- count++;
- }
- }
-
- return count;
-}
-
-static ESummaryConnectionData *
-make_connection (Weather *w)
-{
- ESummaryConnectionData *data;
-
- data = g_new (ESummaryConnectionData, 1);
- data->hostname = make_url (w->location);
- data->type = g_strdup (_("Weather"));
-
- return data;
-}
-
-static GList *
-e_summary_weather_add (ESummary *summary,
- void *data)
-{
- ESummaryWeather *weather;
- GList *p, *connections = NULL;
-
- weather = summary->weather;
- for (p = weather->weathers; p; p = p->next) {
- Weather *w = p->data;
-
- if (w->message != NULL) {
- ESummaryConnectionData *d;
-
- d = make_connection (w);
- connections = g_list_prepend (connections, d);
- }
- }
-
- return connections;
-}
-
-static void
-e_summary_weather_set_online (ESummary *summary,
- GNOME_Evolution_OfflineProgressListener listener,
- gboolean online,
- void *data)
-{
- ESummaryWeather *weather;
- GList *p;
-
- weather = summary->weather;
- if (weather->online == online) {
- return;
- }
-
- if (online == TRUE) {
- e_summary_weather_update (summary);
- weather->timeout = gtk_timeout_add (summary->preferences->weather_refresh_time * 1000,
- (GtkFunction) e_summary_weather_update,
- summary);
- } else {
- for (p = weather->weathers; p; p = p->next) {
- Weather *w;
-
- w = p->data;
- if (w->message) {
- soup_message_cancel (w->message);
- w->message = NULL;
- }
- }
-
- gtk_timeout_remove (weather->timeout);
- weather->timeout = 0;
- }
-
- weather->online = online;
-}
-
-void
-e_summary_weather_init (ESummary *summary)
-{
- ESummaryPrefs *prefs;
- ESummaryWeather *weather;
- ESummaryConnection *connection;
- int timeout;
-
- g_return_if_fail (summary != NULL);
- g_return_if_fail (IS_E_SUMMARY (summary));
-
- if (e_summary_weather_init_locations () == FALSE) {
- return;
- }
-
- prefs = summary->preferences;
- weather = g_new0 (ESummaryWeather, 1);
- weather->online = TRUE;
- summary->weather = weather;
-
- connection = g_new (ESummaryConnection, 1);
- connection->count = e_summary_weather_count;
- connection->add = e_summary_weather_add;
- connection->set_online = e_summary_weather_set_online;
- connection->closure = NULL;
- connection->callback = NULL;
- connection->callback_closure = NULL;
-
- weather->connection = connection;
- e_summary_add_online_connection (summary, connection);
-
- e_summary_add_protocol_listener (summary, "weather", e_summary_weather_protocol, weather);
-
- if (prefs == NULL) {
- /* translators: Put here a list of codes for locations you want to
- see in My Evolution by default. You can find the list of all
- stations and their codes in Evolution sources
- (evolution/my-evolution/Locations) */
- char *default_stations = _("KBOS"), **stations_v, **p;
-
- stations_v = g_strsplit (default_stations, ":", 0);
- g_assert (stations_v != NULL);
- for (p = stations_v; *p != NULL; p++) {
- e_summary_weather_add_location (summary, *p);
- }
- g_strfreev (stations_v);
- timeout = 600;
- } else {
- GList *p;
-
- for (p = prefs->stations; p; p = p->next) {
- e_summary_weather_add_location (summary, p->data);
- }
- timeout = prefs->weather_refresh_time;
- }
-
- e_summary_weather_update (summary);
-
- weather->timeout = gtk_timeout_add (timeout * 1000,
- (GtkFunction) e_summary_weather_update,
- summary);
- return;
-}
-
-const char *
-e_summary_weather_code_to_name (const char *code)
-{
- ESummaryWeatherLocation *location;
-
- if (locations_hash == NULL) {
- if (e_summary_weather_init_locations () == FALSE) {
- return code;
- }
- }
-
- location = g_hash_table_lookup (locations_hash, code);
- if (location == NULL) {
- return code;
- } else {
- return location->name;
- }
-}
-
-static gboolean
-is_weather_shown (const char *code)
-{
- GList *p;
- ESummaryPrefs *global_preferences;
-
- global_preferences = e_summary_preferences_get_global ();
- for (p = global_preferences->stations; p; p = p->next) {
- if (strcmp (p->data, code) == 0) {
- return TRUE;
- }
- }
-
- return FALSE;
-}
-
-void
-e_summary_weather_fill_etable (ESummaryShown *ess)
-{
- ETreePath region, state, location;
- ESummaryShownModelEntry *entry;
- char *key, *path;
- int nregions, iregions;
- char **regions;
-
- path = g_strdup (EVOLUTION_DATADIR "/evolution/Locations");
-
- key = g_strdup_printf ("=%s=/", path);
- g_free (path);
-
- gnome_config_push_prefix (key);
- g_free (key);
-
- gnome_config_get_vector ("Main/regions", &nregions, &regions);
- region = NULL;
- for (iregions = nregions - 1; iregions >= 0; iregions--) {
- int nstates, istates;
- char **states;
- char *region_name;
- char *region_name_key;
- char *states_key;
-
- region_name_key = g_strconcat (regions[iregions], "/name", NULL);
- states_key = g_strconcat (regions[iregions], "/states", NULL);
- region_name = gnome_config_get_string (region_name_key);
-
- entry = g_new (ESummaryShownModelEntry, 1);
- entry->location = NULL;
- entry->name = g_strdup (region_name);
- entry->showable = FALSE;
-
- region = e_summary_shown_add_node (ess, TRUE, entry, NULL, FALSE, NULL);
-
- gnome_config_get_vector (states_key, &nstates, &states);
-
- state = NULL;
- for (istates = nstates - 1; istates >= 0; istates--) {
- void *iter;
- char *iter_key, *iter_val;
- char *state_path, *state_name_key, *state_name;
-
- state_path = g_strconcat (regions[iregions], "_", states[istates], "/", NULL);
- state_name_key = g_strconcat (state_path, "name", NULL);
- state_name = gnome_config_get_string (state_name_key);
-
- entry = g_new (ESummaryShownModelEntry, 1);
- entry->location = NULL;
- entry->name = g_strdup (state_name);
- entry->showable = FALSE;
-
- state = e_summary_shown_add_node (ess, TRUE, entry, region, FALSE, NULL);
-
- location = NULL;
- iter = gnome_config_init_iterator (state_path);
-
- while ((iter = gnome_config_iterator_next (iter, &iter_key, &iter_val)) != NULL) {
- if (strstr (iter_key, "loc") != NULL) {
- char **locdata;
- int nlocdata;
-
- gnome_config_make_vector (iter_val,
- &nlocdata,
- &locdata);
- g_return_if_fail (nlocdata == 4);
-
- entry = g_new (ESummaryShownModelEntry, 1);
- entry->location = g_strdup (locdata[1]);
- entry->name = g_strdup (locdata[0]);
- entry->showable = TRUE;
-
- location = e_summary_shown_add_node (ess, TRUE, entry, state, TRUE, NULL);
- /* FIXME: Show the showns here */
- if (is_weather_shown (locdata[1]) == TRUE) {
- entry = g_new (ESummaryShownModelEntry, 1);
- entry->location = g_strdup (locdata[1]);
- entry->name = g_strdup (locdata[0]);
- location = e_summary_shown_add_node (ess, FALSE, entry, NULL, TRUE, NULL);
- }
- g_strfreev (locdata);
- }
-
- g_free (iter_key);
- g_free (iter_val);
- }
-
- g_free (state_name);
- g_free (state_path);
- g_free (state_name_key);
- }
-
- g_strfreev (states);
- g_free (region_name);
- g_free (region_name_key);
- g_free (states_key);
- }
-
- g_strfreev (regions);
- gnome_config_pop_prefix ();
-
- return;
-}
-
-void
-e_summary_weather_reconfigure (ESummary *summary)
-{
- ESummaryWeather *weather;
- GList *old, *p;
-
- g_return_if_fail (summary != NULL);
- g_return_if_fail (IS_E_SUMMARY (summary));
-
- weather = summary->weather;
-
- /* Stop timeout so it doesn't occur while we're changing stuff*/
- gtk_timeout_remove (weather->timeout);
-
- for (old = weather->weathers; old; old = old->next) {
- Weather *w;
-
- w = old->data;
- weather_free (w);
- }
- g_list_free (weather->weathers);
- weather->weathers = NULL;
- for (p = summary->preferences->stations; p; p = p->next) {
- e_summary_weather_add_location (summary, p->data);
- }
-
- weather->timeout = gtk_timeout_add (summary->preferences->weather_refresh_time * 1000,
- (GtkFunction) e_summary_weather_update, summary);
- e_summary_weather_update (summary);
-}
-
-void
-e_summary_weather_free (ESummary *summary)
-{
- ESummaryWeather *weather;
- GList *p;
-
- g_return_if_fail (summary != NULL);
- g_return_if_fail (IS_E_SUMMARY (summary));
-
- weather = summary->weather;
-
- if (weather->timeout != 0) {
- gtk_timeout_remove (weather->timeout);
- }
- for (p = weather->weathers; p; p = p->next) {
- Weather *w = p->data;
-
- weather_free (w);
- }
- g_list_free (weather->weathers);
- g_free (weather->html);
-
- e_summary_remove_online_connection (summary, weather->connection);
- g_free (weather->connection);
-
- g_free (weather);
- summary->weather = NULL;
-}
-
diff --git a/my-evolution/e-summary-weather.h b/my-evolution/e-summary-weather.h
deleted file mode 100644
index 6933137ed2..0000000000
--- a/my-evolution/e-summary-weather.h
+++ /dev/null
@@ -1,153 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-summary-weather.h
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Iain Holmes
- */
-
-#ifndef __E_SUMMARY_WEATHER_H__
-#define __E_SUMMARY_WEATHER_H__
-
-#include <time.h>
-
-#include "e-summary-type.h"
-#include "e-summary-shown.h"
-
-typedef struct _ESummaryWeather ESummaryWeather;
-
-#define WEATHER_LOCATION_NAME_MAX_LEN 100
-#define WEATHER_LOCATION_CODE_LEN 4
-#define WEATHER_LOCATION_ZONE_LEN 7
-#define WEATHER_LOCATION_RADAR_LEN 3
-
-typedef struct _ESummaryWeatherLocation {
- char *name;
- char *code;
- char *zone;
- char *radar;
-} ESummaryWeatherLocation;
-
-typedef enum _ESummaryWeatherWindDir {
- WIND_VARIABLE,
- WIND_N,
- WIND_NNE,
- WIND_NE,
- WIND_ENE,
- WIND_E,
- WIND_ESE,
- WIND_SE,
- WIND_SSE,
- WIND_S,
- WIND_SSW,
- WIND_SW,
- WIND_WSW,
- WIND_W,
- WIND_WNW,
- WIND_NW,
- WIND_NNW
-} ESummaryWeatherWindDir;
-
-typedef enum _ESummaryWeatherSky {
- SKY_CLEAR,
- SKY_BROKEN,
- SKY_SCATTERED,
- SKY_FEW,
- SKY_OVERCAST
-} ESummaryWeatherSky;
-
-typedef enum _ESummaryWeatherConditionPhenomenon {
- PHENOMENON_NONE,
-
- PHENOMENON_DRIZZLE,
- PHENOMENON_RAIN,
- PHENOMENON_SNOW,
- PHENOMENON_SNOW_GRAINS,
- PHENOMENON_ICE_CRYSTALS,
- PHENOMENON_ICE_PELLETS,
- PHENOMENON_HAIL,
- PHENOMENON_SMALL_HAIL,
- PHENOMENON_UNKNOWN_PRECIPITATION,
-
- PHENOMENON_MIST,
- PHENOMENON_FOG,
- PHENOMENON_SMOKE,
- PHENOMENON_VOLCANIC_ASH,
- PHENOMENON_SAND,
- PHENOMENON_HAZE,
- PHENOMENON_SPRAY,
- PHENOMENON_DUST,
-
- PHENOMENON_SQUALL,
- PHENOMENON_SANDSTORM,
- PHENOMENON_DUSTSTORM,
- PHENOMENON_FUNNEL_CLOUD,
- PHENOMENON_TORNADO,
- PHENOMENON_DUST_WHIRLS
-} ESummaryWeatherConditionPhenomenon;
-
-typedef enum _ESummaryWeatherConditionQualifier {
- QUALIFIER_NONE,
-
- QUALIFIER_VICINITY,
-
- QUALIFIER_LIGHT,
- QUALIFIER_MODERATE,
- QUALIFIER_HEAVY,
- QUALIFIER_SHALLOW,
- QUALIFIER_PATCHES,
- QUALIFIER_PARTIAL,
- QUALIFIER_THUNDERSTORM,
- QUALIFIER_BLOWING,
- QUALIFIER_SHOWERS,
- QUALIFIER_DRIFTING,
- QUALIFIER_FREEZING
-} ESummaryWeatherConditionQualifier;
-
-typedef struct _ESummaryWeatherConditions {
- gboolean significant;
- ESummaryWeatherConditionPhenomenon phenomenon;
- ESummaryWeatherConditionQualifier qualifier;
-} ESummaryWeatherConditions;
-
-typedef enum _ESummaryWeatherUnits {
- UNITS_IMPERIAL,
- UNITS_METRIC
-} ESummaryWeatherUnits;
-
-typedef enum _ESummaryWeatherForecastType {
- FORECAST_STATE,
- FORECAST_ZONE
-} ESummaryWeatherForecastType;
-
-typedef double ESummaryWeatherTemperature;
-typedef int ESummaryWeatherHumidity;
-typedef int ESummaryWeatherWindSpeed;
-typedef double ESummaryWeatherPressure;
-typedef double ESummaryWeatherVisibility;
-
-typedef time_t ESummaryWeatherUpdate;
-
-char *e_summary_weather_get_html (ESummary *summary);
-void e_summary_weather_init (ESummary *summary);
-void e_summary_weather_reconfigure (ESummary *summary);
-void e_summary_weather_fill_etable (ESummaryShown *ess);
-const char *e_summary_weather_code_to_name (const char *code);
-void e_summary_weather_free (ESummary *summary);
-gboolean e_summary_weather_update (ESummary *summary);
-
-#endif
diff --git a/my-evolution/e-summary.c b/my-evolution/e-summary.c
deleted file mode 100644
index be738d726f..0000000000
--- a/my-evolution/e-summary.c
+++ /dev/null
@@ -1,939 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-summary.c
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Iain Holmes
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <errno.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-
-#include <glib.h>
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-i18n.h>
-#include <libgnome/gnome-util.h>
-
-#include <gtkhtml/gtkhtml.h>
-#include <gtkhtml/gtkhtml-stream.h>
-#include <gtkhtml/htmlengine.h>
-#include <gtkhtml/htmlselection.h>
-
-#include <gal/util/e-util.h>
-#include <gal/widgets/e-gui-utils.h>
-#include <gal/widgets/e-unicode.h>
-
-#include <bonobo/bonobo-listener.h>
-#include <bonobo/bonobo-exception.h>
-#include <bonobo/bonobo-moniker-util.h>
-#include <bonobo/bonobo-ui-component.h>
-#include <bonobo-conf/bonobo-config-database.h>
-
-#include <libgnome/gnome-paper.h>
-#include <libgnome/gnome-url.h>
-
-#include <libgnomeprint/gnome-print-master.h>
-#include <libgnomeprint/gnome-print-master-preview.h>
-
-#include <gui/alarm-notify/alarm.h>
-#include <cal-util/timeutil.h>
-
-#include "e-summary.h"
-#include "e-summary-preferences.h"
-#include "my-evolution-html.h"
-#include "Mail.h"
-
-#include <Evolution.h>
-
-#include <time.h>
-
-#define PARENT_TYPE (gtk_vbox_get_type ())
-
-extern char *evolution_dir;
-
-static GList *all_summaries = NULL;
-
-static GtkObjectClass *e_summary_parent_class;
-
-struct _ESummaryMailFolderInfo {
- char *name;
-
- int count;
- int unread;
-};
-
-struct _ESummaryPrivate {
- GNOME_Evolution_ShellView shell_view_interface;
-
- GtkWidget *html_scroller;
- GtkWidget *html;
-
- GHashTable *protocol_hash;
-
- GList *connections;
-
- guint pending_reload_tag;
-
- gpointer alarm;
-
- gboolean frozen;
- gboolean redraw_pending;
-};
-
-typedef struct _ProtocolListener {
- ESummaryProtocolListener listener;
- void *closure;
-} ProtocolListener;
-
-static GHashTable *images_cache = NULL;
-
-static void
-free_protocol (gpointer key, gpointer value, gpointer user_data)
-{
- g_free (key);
- g_free (value);
-}
-
-static void
-destroy (GtkObject *object)
-{
- ESummary *summary;
- ESummaryPrivate *priv;
-
- summary = E_SUMMARY (object);
- priv = summary->priv;
-
- if (priv == NULL) {
- return;
- }
-
- all_summaries = g_list_remove (all_summaries, summary);
-
- if (priv->pending_reload_tag) {
- gtk_timeout_remove (priv->pending_reload_tag);
- priv->pending_reload_tag = 0;
- }
-
- if (summary->mail) {
- e_summary_mail_free (summary);
- }
- if (summary->calendar) {
- e_summary_calendar_free (summary);
- }
- if (summary->rdf) {
- e_summary_rdf_free (summary);
- }
- if (summary->weather) {
- e_summary_weather_free (summary);
- }
- if (summary->tasks) {
- e_summary_tasks_free (summary);
- }
-
- alarm_remove (priv->alarm);
- alarm_done ();
-
- if (priv->protocol_hash) {
- g_hash_table_foreach (priv->protocol_hash, free_protocol, NULL);
- g_hash_table_destroy (priv->protocol_hash);
- }
-
- g_free (priv);
- summary->priv = NULL;
-
- e_summary_parent_class->destroy (object);
-}
-
-void
-e_summary_draw (ESummary *summary)
-{
- GString *string;
- GtkHTMLStream *stream;
- char *html;
- char date[256], *date_utf;
- time_t t;
-
- g_return_if_fail (summary != NULL);
- g_return_if_fail (IS_E_SUMMARY (summary));
-
- if (summary->mail == NULL || summary->calendar == NULL
- || summary->rdf == NULL || summary->weather == NULL
- || summary->tasks == NULL) {
- return;
- }
-
- if (summary->priv->frozen == TRUE) {
- summary->priv->redraw_pending = TRUE;
- return;
- }
-
- string = g_string_new (HTML_1);
- t = time (NULL);
- strftime (date, 255, _("%A, %B %e %Y"), localtime (&t));
-
- date_utf = e_utf8_from_locale_string (date);
- html = g_strdup_printf (HTML_2, date_utf);
- g_free (date_utf);
- g_string_append (string, html);
- g_free (html);
- g_string_append (string, HTML_3);
-
- /* Weather and RDF stuff here */
- html = e_summary_weather_get_html (summary);
- if (html != NULL) {
- g_string_append (string, html);
- g_free (html);
- }
-
- html = e_summary_rdf_get_html (summary);
- if (html != NULL) {
- g_string_append (string, html);
- g_free (html);
- }
-
- g_string_append (string, HTML_4);
-
- html = (char *) e_summary_mail_get_html (summary);
- if (html != NULL) {
- g_string_append (string, html);
- }
-
- html = (char *) e_summary_calendar_get_html (summary);
- if (html != NULL) {
- g_string_append (string, html);
- }
-
- html = (char *) e_summary_tasks_get_html (summary);
- if (html != NULL) {
- g_string_append (string, html);
- }
-
- g_string_append (string, HTML_5);
-
- stream = gtk_html_begin (GTK_HTML (summary->priv->html));
- GTK_HTML (summary->priv->html)->engine->newPage = FALSE;
- gtk_html_write (GTK_HTML (summary->priv->html), stream, string->str, strlen (string->str));
- gtk_html_end (GTK_HTML (summary->priv->html), stream, GTK_HTML_STREAM_OK);
-
- g_string_free (string, TRUE);
-}
-
-void
-e_summary_redraw_all (void)
-{
- GList *p;
-
- for (p = all_summaries; p; p = p->next) {
- e_summary_draw (E_SUMMARY (p->data));
- }
-}
-
-static char *
-e_pixmap_file (const char *filename)
-{
- char *ret;
- char *edir;
-
- if (g_file_exists (filename)) {
- ret = g_strdup (filename);
-
- return ret;
- }
-
- /* Try the evolution images dir */
- edir = g_concat_dir_and_file (EVOLUTION_DATADIR "/images/evolution",
- filename);
-
- if (g_file_exists (edir)) {
- ret = g_strdup (edir);
- g_free (edir);
-
- return ret;
- }
- g_free (edir);
-
- /* Try the evolution button images dir */
- edir = g_concat_dir_and_file (EVOLUTION_DATADIR "/images/evolution/buttons",
- filename);
-
- if (g_file_exists (edir)) {
- ret = g_strdup (edir);
- g_free (edir);
-
- return ret;
- }
- g_free (edir);
-
- /* Fall back to the gnome_pixmap_file */
- ret = gnome_pixmap_file (filename);
- if (ret == NULL) {
- g_warning ("Could not find pixmap for %s", filename);
- }
-
- return ret;
-}
-
-struct _imgcache {
- char *buffer;
- int bufsize;
-};
-
-static void
-e_summary_url_clicked (GtkHTML *html,
- const char *url,
- ESummary *summary)
-{
- char *protocol, *protocol_end;
- ProtocolListener *protocol_listener;
-
- protocol_end = strchr (url, ':');
- if (protocol_end == NULL) {
- /* No url, let gnome work it out */
- gnome_url_show (url);
- return;
- }
-
- protocol = g_strndup (url, protocol_end - url);
-
- protocol_listener = g_hash_table_lookup (summary->priv->protocol_hash,
- protocol);
- g_free (protocol);
-
- if (protocol_listener == NULL) {
- /* Again, let gnome work it out */
- gnome_url_show (url);
- return;
- }
-
- protocol_listener->listener (summary, url, protocol_listener->closure);
-}
-
-static char *
-e_read_file_with_length (const char *filename,
- size_t *length)
-{
- int fd;
- struct stat stat_buf;
- char *buf;
- size_t bytes_read, size;
-
- g_return_val_if_fail (filename != NULL, NULL);
-
- fd = open (filename, O_RDONLY);
- g_return_val_if_fail (fd != -1, NULL);
-
- fstat (fd, &stat_buf);
- size = stat_buf.st_size;
- buf = g_new (char, size + 1);
-
- bytes_read = 0;
- while (bytes_read < size) {
- ssize_t rc;
-
- rc = read (fd, buf + bytes_read, size - bytes_read);
- if (rc < 0) {
- if (errno != EINTR) {
- close (fd);
- g_free (buf);
-
- return NULL;
- }
- } else if (rc == 0) {
- break;
- } else {
- bytes_read += rc;
- }
- }
-
- buf[bytes_read] = '\0';
-
- if (length) {
- *length = bytes_read;
- }
-
- return buf;
-}
-
-static void
-e_summary_url_requested (GtkHTML *html,
- const char *url,
- GtkHTMLStream *stream,
- ESummary *summary)
-{
- char *filename;
- struct _imgcache *img = NULL;
-
- if (strncasecmp (url, "file:", 5) == 0) {
- url += 5;
- filename = e_pixmap_file (url);
- } else if (strchr (url, ':') >= strchr (url, '/')) {
- filename = e_pixmap_file (url);
- } else {
- filename = g_strdup (url);
- }
-
- if (filename == NULL) {
- gtk_html_stream_close (stream, GTK_HTML_STREAM_ERROR);
- return;
- }
-
- if (images_cache != NULL) {
- img = g_hash_table_lookup (images_cache, filename);
- } else {
- images_cache = g_hash_table_new (g_str_hash, g_str_equal);
- }
-
- if (img == NULL) {
- size_t length;
- char *contents;
-
- contents = e_read_file_with_length (filename, &length);
- if (contents == NULL) {
- return;
- }
-
- img = g_new (struct _imgcache, 1);
- img->buffer = contents;
- img->bufsize = length;
-
- g_hash_table_insert (images_cache, g_strdup (filename), img);
- }
-
- gtk_html_stream_write (stream, img->buffer, img->bufsize);
- gtk_html_stream_close (stream, GTK_HTML_STREAM_OK);
-}
-
-static void
-e_summary_evolution_protocol_listener (ESummary *summary,
- const char *uri,
- void *closure)
-{
- e_summary_change_current_view (summary, uri);
-}
-
-static void
-e_summary_class_init (GtkObjectClass *object_class)
-{
- object_class->destroy = destroy;
-
- e_summary_parent_class = gtk_type_class (PARENT_TYPE);
-}
-
-static void
-alarm_fn (gpointer alarm_id,
- time_t trigger,
- gpointer data)
-{
- ESummary *summary;
- time_t t, day_end;
-
- summary = data;
- t = time (NULL);
- day_end = time_day_end_with_zone (t, summary->tz);
- summary->priv->alarm = alarm_add (day_end, alarm_fn, summary, NULL);
-
- e_summary_reconfigure (summary);
-}
-
-#define DEFAULT_HTML "<html><head><title>Summary</title></head><body bgcolor=\"#ffffff\">%s</body></html>"
-
-static void
-e_summary_init (ESummary *summary)
-{
- Bonobo_ConfigDatabase db;
- CORBA_Environment ev;
- ESummaryPrivate *priv;
- GdkColor bgcolor = {0, 0xffff, 0xffff, 0xffff};
- time_t t, day_end;
- char *def, *default_utf;
-
- summary->priv = g_new (ESummaryPrivate, 1);
-
- priv = summary->priv;
-
- priv->frozen = TRUE;
- priv->redraw_pending = FALSE;
- priv->pending_reload_tag = 0;
-
- priv->html_scroller = gtk_scrolled_window_new (NULL, NULL);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (priv->html_scroller),
- GTK_POLICY_AUTOMATIC,
- GTK_POLICY_AUTOMATIC);
- priv->html = gtk_html_new ();
- gtk_html_set_editable (GTK_HTML (priv->html), FALSE);
- gtk_html_set_default_content_type (GTK_HTML (priv->html),
- "text/html; charset=utf-8");
- gtk_html_set_default_background_color (GTK_HTML (priv->html), &bgcolor);
- def = g_strdup_printf (DEFAULT_HTML, _("Please wait..."));
- default_utf = e_utf8_from_locale_string (def);
- gtk_html_load_from_string (GTK_HTML (priv->html), default_utf, strlen (default_utf));
- g_free (def);
- g_free (default_utf);
-
- gtk_signal_connect (GTK_OBJECT (priv->html), "url-requested",
- GTK_SIGNAL_FUNC (e_summary_url_requested), summary);
- gtk_signal_connect (GTK_OBJECT (priv->html), "link-clicked",
- GTK_SIGNAL_FUNC (e_summary_url_clicked), summary);
-#if 0
- gtk_signal_connect (GTK_OBJECT (priv->html), "on-url",
- GTK_SIGNAL_FUNC (e_summary_on_url), summary);
-#endif
-
- gtk_container_add (GTK_CONTAINER (priv->html_scroller), priv->html);
- gtk_widget_show_all (priv->html_scroller);
- gtk_box_pack_start (GTK_BOX (summary), priv->html_scroller,
- TRUE, TRUE, 0);
-
- priv->protocol_hash = NULL;
- priv->connections = NULL;
-
- CORBA_exception_init (&ev);
- db = bonobo_get_object ("wombat:", "Bonobo/ConfigDatabase", &ev);
- if (BONOBO_EX (&ev) || db == CORBA_OBJECT_NIL) {
- CORBA_exception_free (&ev);
- g_warning ("Error getting Wombat. Using defaults");
- return;
- }
-
- summary->timezone = bonobo_config_get_string_with_default (db,
- "/Calendar/Display/Timezone", "UTC", NULL);
- if (!summary->timezone || !summary->timezone[0]) {
- g_free (summary->timezone);
- summary->timezone = g_strdup ("UTC");
- }
- summary->tz = icaltimezone_get_builtin_timezone (summary->timezone);
-
- bonobo_object_release_unref (db, NULL);
- CORBA_exception_free (&ev);
-
- t = time (NULL);
- if (summary->tz == NULL) {
- day_end = time_day_end (t);
- } else {
- day_end = time_day_end_with_zone (t, summary->tz);
- }
-
- priv->alarm = alarm_add (day_end, alarm_fn, summary, NULL);
-}
-
-E_MAKE_TYPE (e_summary, "ESummary", ESummary, e_summary_class_init,
- e_summary_init, PARENT_TYPE);
-
-GtkWidget *
-e_summary_new (const GNOME_Evolution_Shell shell,
- ESummaryPrefs *prefs)
-{
- ESummary *summary;
-
- summary = gtk_type_new (e_summary_get_type ());
- summary->shell = shell;
- /* Just get a pointer to the global preferences */
- summary->preferences = prefs;
-
- e_summary_add_protocol_listener (summary, "evolution", e_summary_evolution_protocol_listener, summary);
-
- e_summary_mail_init (summary);
- e_summary_calendar_init (summary);
- e_summary_tasks_init (summary);
- e_summary_rdf_init (summary);
- e_summary_weather_init (summary);
-
-/* e_summary_draw (summary); */
-
- all_summaries = g_list_prepend (all_summaries, summary);
- return GTK_WIDGET (summary);
-}
-
-static void
-do_summary_print (ESummary *summary,
- gboolean preview)
-{
- GnomePrintContext *print_context;
- GnomePrintMaster *print_master;
- GnomePrintDialog *gpd;
- GnomePrinter *printer = NULL;
- int copies = 1;
- int collate = FALSE;
-
- if (!preview) {
- gpd = GNOME_PRINT_DIALOG (gnome_print_dialog_new (_("Print Summary"), GNOME_PRINT_DIALOG_COPIES));
- gnome_dialog_set_default (GNOME_DIALOG (gpd), GNOME_PRINT_PRINT);
-
- switch (gnome_dialog_run (GNOME_DIALOG (gpd))) {
- case GNOME_PRINT_PRINT:
- break;
-
- case GNOME_PRINT_PREVIEW:
- preview = TRUE;
- break;
-
- case -1:
- return;
-
- default:
- gnome_dialog_close (GNOME_DIALOG (gpd));
- return;
- }
-
- gnome_print_dialog_get_copies (gpd, &copies, &collate);
- printer = gnome_print_dialog_get_printer (gpd);
- gnome_dialog_close (GNOME_DIALOG (gpd));
- }
-
- print_master = gnome_print_master_new ();
-
- if (printer) {
- gnome_print_master_set_printer (print_master, printer);
- }
- gnome_print_master_set_copies (print_master, copies, collate);
- print_context = gnome_print_master_get_context (print_master);
- gtk_html_print (GTK_HTML (summary->priv->html), print_context);
- gnome_print_master_close (print_master);
-
- if (preview) {
- gboolean landscape = FALSE;
- GnomePrintMasterPreview *preview;
-
- preview = gnome_print_master_preview_new_with_orientation (
- print_master, _("Print Preview"), landscape);
- gtk_widget_show (GTK_WIDGET (preview));
- } else {
- int result = gnome_print_master_print (print_master);
-
- if (result == -1) {
- e_notice (NULL, GNOME_MESSAGE_BOX_ERROR,
- _("Printing of Summary failed"));
- }
- }
-
- gtk_object_unref (GTK_OBJECT (print_master));
-}
-
-void
-e_summary_print (BonoboUIComponent *component,
- gpointer userdata,
- const char *cname)
-{
- ESummary *summary = userdata;
-
- do_summary_print (summary, FALSE);
-}
-
-void
-e_summary_add_protocol_listener (ESummary *summary,
- const char *protocol,
- ESummaryProtocolListener listener,
- void *closure)
-{
- ProtocolListener *old;
-
- g_return_if_fail (summary != NULL);
- g_return_if_fail (IS_E_SUMMARY (summary));
- g_return_if_fail (protocol != NULL);
- g_return_if_fail (listener != NULL);
-
- if (summary->priv->protocol_hash == NULL) {
- summary->priv->protocol_hash = g_hash_table_new (g_str_hash,
- g_str_equal);
- old = NULL;
- } else {
- old = g_hash_table_lookup (summary->priv->protocol_hash, protocol);
- }
-
- if (old != NULL) {
- return;
- }
-
- old = g_new (ProtocolListener, 1);
- old->listener = listener;
- old->closure = closure;
-
- g_hash_table_insert (summary->priv->protocol_hash, g_strdup (protocol), old);
-}
-
-void
-e_summary_change_current_view (ESummary *summary,
- const char *uri)
-{
- GNOME_Evolution_ShellView svi;
- CORBA_Environment ev;
-
- g_return_if_fail (summary != NULL);
- g_return_if_fail (IS_E_SUMMARY (summary));
-
- svi = summary->shell_view_interface;
- if (svi == NULL) {
- return;
- }
-
- CORBA_exception_init (&ev);
- GNOME_Evolution_ShellView_changeCurrentView (svi, uri, &ev);
- CORBA_exception_free (&ev);
-}
-
-void
-e_summary_set_message (ESummary *summary,
- const char *message,
- gboolean busy)
-{
- GNOME_Evolution_ShellView svi;
- CORBA_Environment ev;
-
- g_return_if_fail (summary != NULL);
- g_return_if_fail (IS_E_SUMMARY (summary));
-
- svi = summary->shell_view_interface;
- if (svi == NULL) {
- return;
- }
-
- CORBA_exception_init (&ev);
- GNOME_Evolution_ShellView_setMessage (svi, message ? message : "", busy, &ev);
- CORBA_exception_free (&ev);
-}
-
-void
-e_summary_unset_message (ESummary *summary)
-{
- GNOME_Evolution_ShellView svi;
- CORBA_Environment ev;
-
- g_return_if_fail (summary != NULL);
- g_return_if_fail (IS_E_SUMMARY (summary));
-
- svi = summary->shell_view_interface;
- if (svi == NULL) {
- return;
- }
-
- CORBA_exception_init (&ev);
- GNOME_Evolution_ShellView_unsetMessage (svi, &ev);
- CORBA_exception_free (&ev);
-}
-
-void
-e_summary_reconfigure (ESummary *summary)
-{
- if (summary->rdf != NULL) {
- e_summary_rdf_reconfigure (summary);
- }
-
- if (summary->weather != NULL) {
- e_summary_weather_reconfigure (summary);
- }
-
- if (summary->calendar != NULL) {
- e_summary_calendar_reconfigure (summary);
- }
-
- if (summary->tasks != NULL) {
- e_summary_tasks_reconfigure (summary);
- }
-
- e_summary_draw (summary);
-}
-
-void
-e_summary_reconfigure_all (void)
-{
- GList *p;
-
- /* This is here, because it only needs to be done once for all summaries */
- e_summary_mail_reconfigure ();
-
- for (p = all_summaries; p; p = p->next) {
- e_summary_reconfigure (E_SUMMARY (p->data));
- }
-}
-
-static gint
-e_summary_reload_timeout (gpointer closure)
-{
- ESummary *summary = closure;
-
- if (summary->rdf != NULL) {
- e_summary_rdf_update (summary);
- }
-
- if (summary->weather != NULL) {
- e_summary_weather_update (summary);
- }
-
- summary->priv->pending_reload_tag = 0;
-
- return FALSE;
-}
-
-void
-e_summary_reload (BonoboUIComponent *component,
- gpointer userdata,
- const char *cname)
-{
- ESummary *summary = userdata;
-
- /*
- This is an evil hack to work around a bug in gnome-vfs:
- gnome-vfs seems to not properly lock partially-constructed
- objects, so if you gnome_vfs_async_open and then immediately
- gnome_vfs_async_cancel, it is possible to start to destroy
- an object before it is totally constructed. Hilarity ensures.
-
- This is an evil and stupid hack, but it slows down our reload
- requests enough the gnome-vfs should be able to keep up. And
- given that these are not instantaneous operations to begin
- with, the users should be none the wiser. -JT
- */
-
- if (summary->priv->pending_reload_tag) {
- gtk_timeout_remove (summary->priv->pending_reload_tag);
- }
-
- summary->priv->pending_reload_tag =
- gtk_timeout_add (80, e_summary_reload_timeout, summary);
-}
-
-int
-e_summary_count_connections (ESummary *summary)
-{
- GList *p;
- int count = 0;
-
- g_return_val_if_fail (IS_E_SUMMARY (summary), 0);
-
- for (p = summary->priv->connections; p; p = p->next) {
- ESummaryConnection *c;
-
- c = p->data;
- count += c->count (summary, c->closure);
- }
-
- g_print ("Count: %d", count);
- return count;
-}
-
-GList *
-e_summary_add_connections (ESummary *summary)
-{
- GList *p;
- GList *connections = NULL;
-
- g_return_val_if_fail (IS_E_SUMMARY (summary), NULL);
-
- for (p = summary->priv->connections; p; p = p->next) {
- ESummaryConnection *c;
- GList *r;
-
- c = p->data;
- r = c->add (summary, c->closure);
-
- connections = g_list_concat (connections, r);
- }
-
- return connections;
-}
-
-void
-e_summary_set_online (ESummary *summary,
- GNOME_Evolution_OfflineProgressListener progress,
- gboolean online,
- ESummaryOnlineCallback callback,
- void *closure)
-{
- GList *p;
-
- g_return_if_fail (IS_E_SUMMARY (summary));
-
- for (p = summary->priv->connections; p; p = p->next) {
- ESummaryConnection *c;
-
- c = p->data;
- c->callback = callback;
- c->callback_closure = closure;
-
- c->set_online (summary, progress, online, c->closure);
- g_print ("Setting %s\n", online ? "online" : "offline");
-
- if (callback != NULL) {
- callback (summary, closure);
- }
- }
-}
-
-void
-e_summary_add_online_connection (ESummary *summary,
- ESummaryConnection *connection)
-{
- g_return_if_fail (summary != NULL);
- g_return_if_fail (IS_E_SUMMARY (summary));
- g_return_if_fail (connection != NULL);
-
- summary->priv->connections = g_list_prepend (summary->priv->connections,
- connection);
-}
-
-void
-e_summary_remove_online_connection (ESummary *summary,
- ESummaryConnection *connection)
-{
- GList *p;
-
- g_return_if_fail (summary != NULL);
- g_return_if_fail (IS_E_SUMMARY (summary));
- g_return_if_fail (connection != NULL);
-
- p = g_list_find (summary->priv->connections, connection);
- g_return_if_fail (p != NULL);
-
- summary->priv->connections = g_list_remove_link (summary->priv->connections, p);
- g_list_free (p);
-}
-
-void
-e_summary_freeze (ESummary *summary)
-{
- g_return_if_fail (IS_E_SUMMARY (summary));
- g_return_if_fail (summary->priv != NULL);
-
- if (summary->priv->frozen == TRUE) {
- return;
- }
-
- summary->priv->frozen = TRUE;
-}
-
-void
-e_summary_thaw (ESummary *summary)
-{
- g_return_if_fail (IS_E_SUMMARY (summary));
- g_return_if_fail (summary->priv != NULL);
-
- if (summary->priv->frozen == FALSE) {
- return;
- }
-
- summary->priv->frozen = FALSE;
- if (summary->priv->redraw_pending) {
- e_summary_draw (summary);
- }
-}
diff --git a/my-evolution/e-summary.h b/my-evolution/e-summary.h
deleted file mode 100644
index 4ee9d7f98c..0000000000
--- a/my-evolution/e-summary.h
+++ /dev/null
@@ -1,171 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-summary.h
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Iain Holmes
- */
-
-#ifndef _E_SUMMARY_H__
-#define _E_SUMMARY_H__
-
-#include <gtk/gtkvbox.h>
-#include <bonobo/bonobo-ui-component.h>
-#include "e-summary-type.h"
-#include "e-summary-mail.h"
-#include "e-summary-calendar.h"
-#include "e-summary-rdf.h"
-#include "e-summary-weather.h"
-#include "e-summary-tasks.h"
-
-#include <ical.h>
-
-#include <Evolution.h>
-
-#define E_SUMMARY_TYPE (e_summary_get_type ())
-#define E_SUMMARY(obj) (GTK_CHECK_CAST ((obj), E_SUMMARY_TYPE, ESummary))
-#define E_SUMMARY_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), E_SUMMARY_TYPE, ESummaryClass))
-#define IS_E_SUMMARY(obj) (GTK_CHECK_TYPE ((obj), E_SUMMARY_TYPE))
-#define IS_E_SUMMARY_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((obj), E_SUMMARY_TYPE))
-
-typedef struct _ESummaryPrivate ESummaryPrivate;
-typedef struct _ESummaryClass ESummaryClass;
-typedef struct _ESummaryPrefs ESummaryPrefs;
-typedef struct _ESummaryConnection ESummaryConnection;
-typedef struct _ESummaryConnectionData ESummaryConnectionData;
-
-typedef void (* ESummaryProtocolListener) (ESummary *summary,
- const char *uri,
- void *closure);
-typedef int (* ESummaryConnectionCount) (ESummary *summary,
- void *closure);
-typedef GList *(* ESummaryConnectionAdd) (ESummary *summary,
- void *closure);
-typedef void (* ESummaryConnectionSetOnline) (ESummary *summary,
- GNOME_Evolution_OfflineProgressListener progress,
- gboolean online,
- void *closure);
-typedef void (*ESummaryOnlineCallback) (ESummary *summary,
- void *closure);
-
-struct _ESummaryConnection {
- ESummaryConnectionCount count;
- ESummaryConnectionAdd add;
- ESummaryConnectionSetOnline set_online;
- ESummaryOnlineCallback callback;
-
- void *closure;
- void *callback_closure;
-};
-
-struct _ESummaryConnectionData {
- char *hostname;
- char *type;
-};
-
-struct _ESummaryPrefs {
-
- /* Mail */
- GList *display_folders;
- gboolean show_full_path;
-
- /* RDF */
- GList *rdf_urls;
- int rdf_refresh_time;
- int limit;
-
- /* Weather */
- GList *stations;
- ESummaryWeatherUnits units;
- int weather_refresh_time;
-
- /* Schedule */
- ESummaryCalendarDays days;
- ESummaryCalendarNumTasks show_tasks;
-};
-
-struct _ESummary {
- GtkVBox parent;
-
- ESummaryPrefs *preferences;
-/* ESummaryPrefs *old_prefs; */
-
- ESummaryMail *mail;
- ESummaryCalendar *calendar;
- ESummaryRDF *rdf;
- ESummaryWeather *weather;
- ESummaryTasks *tasks;
-
- ESummaryPrivate *priv;
-
- GNOME_Evolution_Shell shell;
- GNOME_Evolution_ShellView shell_view_interface;
-
- gboolean online;
-
- char *timezone;
- icaltimezone *tz;
-};
-
-struct _ESummaryClass {
- GtkVBoxClass parent_class;
-};
-
-
-GtkType e_summary_get_type (void);
-GtkWidget *e_summary_new (const GNOME_Evolution_Shell shell,
- ESummaryPrefs *prefs);
-
-void e_summary_print (BonoboUIComponent *component,
- gpointer user_data,
- const char *cname);
-void e_summary_reload (BonoboUIComponent *component,
- gpointer user_data,
- const char *cname);
-void e_summary_draw (ESummary *summary);
-void e_summary_redraw_all (void);
-
-void e_summary_change_current_view (ESummary *summary,
- const char *uri);
-
-void e_summary_set_message (ESummary *summary,
- const char *message,
- gboolean busy);
-void e_summary_unset_message (ESummary *summary);
-
-void e_summary_add_protocol_listener (ESummary *summary,
- const char *protocol,
- ESummaryProtocolListener listener,
- void *closure);
-
-void e_summary_reconfigure (ESummary *summary);
-
-int e_summary_count_connections (ESummary *summary);
-GList *e_summary_add_connections (ESummary *summary);
-void e_summary_set_online (ESummary *summary,
- GNOME_Evolution_OfflineProgressListener listener,
- gboolean online,
- ESummaryOnlineCallback callback,
- void *closure);
-void e_summary_add_online_connection (ESummary *summary,
- ESummaryConnection *connection);
-void e_summary_remove_online_connection (ESummary *summary,
- ESummaryConnection *connection);
-
-void e_summary_freeze (ESummary *summary);
-void e_summary_thaw (ESummary *summary);
-#endif
diff --git a/my-evolution/main.c b/my-evolution/main.c
deleted file mode 100644
index da9df3c23a..0000000000
--- a/my-evolution/main.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* main.c
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Iain Holmes
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <unistd.h>
-#include <stdlib.h>
-
-#include <glib.h>
-#include <gdk/gdk.h>
-#include <gdk/gdkrgb.h>
-
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-i18n.h>
-#include <libgnomeui/gnome-init.h>
-
-#include <bonobo/bonobo-main.h>
-#include <liboaf/liboaf.h>
-
-#ifdef GTKHTML_HAVE_GCONF
-#include <gconf/gconf.h>
-#endif
-
-#include <glade/glade.h>
-
-#include "component-factory.h"
-
-int
-main (int argc,
- char **argv)
-{
- CORBA_ORB orb;
-
- bindtextdomain (PACKAGE, EVOLUTION_LOCALEDIR);
- textdomain (PACKAGE);
-
- gnome_init_with_popt_table ("Evolution Executive Summary", VERSION,
- argc, argv, oaf_popt_options, 0, NULL);
- orb = oaf_init (argc, argv);
-
- gdk_rgb_init ();
- if (bonobo_init (orb, CORBA_OBJECT_NIL, CORBA_OBJECT_NIL) == FALSE) {
- g_error (_("Executive summary component could not initialize Bonobo.\n"));
- exit (1);
- }
-
-#ifdef GTKHTML_HAVE_GCONF
- gconf_init (argc, argv, NULL);
-#endif
-
- glade_gnome_init ();
-
- e_cursors_init ();
- gtk_widget_push_visual (gdk_rgb_get_visual ());
- gtk_widget_push_colormap (gdk_rgb_get_cmap ());
-
- /* Start our component */
- component_factory_init ();
-
- bonobo_main ();
-
- return 0;
-}
diff --git a/my-evolution/metar.c b/my-evolution/metar.c
deleted file mode 100644
index 53d630eff4..0000000000
--- a/my-evolution/metar.c
+++ /dev/null
@@ -1,1016 +0,0 @@
-/*
- * metar.c: Metar decoding routines.
- *
- * Originally written by Papadimitriou Spiros <spapadim+@cs.cmu.ed>
- */
-
-#include <config.h>
-#include <glib.h>
-
-#include <unistd.h>
-#include <stdlib.h>
-#include <regex.h>
-#include <math.h>
-
-#include <libgnome/gnome-defs.h>
-#include <libgnome/gnome-i18n.h>
-
-#include "e-summary.h"
-#include "weather.h"
-
-#include "metar.h"
-
-static regex_t metar_re[RE_NUM];
-
-/* Unit conversions and names */
-
-#define TEMP_F_TO_C(f) (((f) - 32.0) * 0.555556)
-#define TEMP_C_TO_F(c) (((c) * 1.8) + 32.0)
-#define TEMP_UNIT_STR(units) (((units) == UNITS_IMPERIAL) ? _(" F") : _(" C"))
-
-#define WINDSPEED_KNOTS_TO_KPH(knots) ((knots) * 1.851965)
-#define WINDSPEED_KPH_TO_KNOTS(kph) ((kph) * 0.539967)
-#define WINDSPEED_UNIT_STR(units) (((units) == UNITS_IMPERIAL) ? _("knots") : _("kph"))
-
-#define PRESSURE_INCH_TO_MM(inch) ((inch) * 25.4)
-#define PRESSURE_MM_TO_INCH(mm) ((mm) * 0.03937)
-#define PRESSURE_MBAR_TO_INCH(mbar) ((mbar) * 0.02963742)
-#define PRESSURE_UNIT_STR(units) (((units) == UNITS_IMPERIAL) ? _("inHg") : _("mmHg"))
-#define VISIBILITY_SM_TO_KM(sm) ((sm) * 1.609344)
-#define VISIBILITY_KM_TO_SM(km) ((km) * 0.621371)
-#define VISIBILITY_UNIT_STR(units) (((units) == UNITS_IMPERIAL) ? _("miles") : _("kilometers"))
-
-static const char *sky_str[] = {
- N_("Clear sky"),
- N_("Broken clouds"),
- N_("Scattered clouds"),
- N_("Few clouds"),
- N_("Overcast")
-};
-
-const char *
-weather_sky_string (Weather *w)
-{
- if (w->sky < 0 ||
- w->sky >= (sizeof (sky_str) / sizeof (char *))) {
- return _("Invalid");
- }
-
- return _(sky_str[(int)w->sky]);
-}
-
-static const char *wind_direction_str[] = {
- N_("Variable"),
- N_("North"), N_("North - NorthEast"), N_("Northeast"), N_("East - NorthEast"),
- N_("East"), N_("East - Southeast"), N_("Southeast"), N_("South - Southeast"),
- N_("South"), N_("South - Southwest"), N_("Southwest"), N_("West - Southwest"),
- N_("West"), N_("West - Northwest"), N_("Northwest"), N_("North - Northwest")};
-
-const char *
-weather_wind_direction_string (Weather *w)
-{
- if (w->wind < 0 ||
- w->wind >= (sizeof (wind_direction_str) / sizeof (char *))) {
- return _("Invalid");
- }
-
- return _(wind_direction_str[(int)w->wind]);
-}
-
-/*
- * Even though tedious, I switched to a 2D array for weather condition
- * strings, in order to facilitate internationalization, esp. for languages
- * with genders.
- *
- * I tried to come up with logical names for most phenomena, but I'm no
- * meteorologist, so there will undoubtedly be some stupid mistakes.
- * However, combinations that did not seem plausible (eg. I cannot imagine
- * what a "light tornado" may be like ;-) were filled in with "??". If this
- * ever comes up in the weather conditions field, let me know...
- */
-
-/*
- * Note, magic numbers, when you change the size here, make sure to change
- * the below function so that new values are recognized
- */
-static const gchar *conditions_str[24][13] = {
-/* NONE
- VICINITY
- LIGHT
- MODERATE
- HEAVY
- SHALLOW
- PATCHES
- PARTIAL
- THUNDERSTORM
- BLOWING
- SHOWERS
- DRIFTING
- FREEZING
-*/
-/* NONE */ {
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
-},
-/* DRIZZLE */ {
- N_("Drizzle"),
- N_("Drizzle in the vicinity"),
- N_("Light drizzle"),
- N_("Moderate drizzle"),
- N_("Heavy drizzle"),
- N_("Shallow drizzle"),
- N_("Patches of drizzle"),
- N_("Partial drizzle"),
- N_("Thunderstorm"),
- N_("Windy drizzle"),
- N_("Showers"),
- N_("Drifting drizzle"),
- N_("Freezing drizzle")
-},
-/* RAIN */ {
- N_("Rain"),
- N_("Rain in the vicinity"),
- N_("Light rain"),
- N_("Moderate rain"),
- N_("Heavy rain"),
- N_("Shallow rain"),
- N_("Patches of rain"),
- N_("Partial rainfall"),
- N_("Thunderstorm"),
- N_("Blowing rainfall"),
- N_("Rain showers"),
- N_("Drifting rain"),
- N_("Freezing rain")
-},
-/* SNOW */ {
- N_("Snow"),
- N_("Snow in the vicinity"),
- N_("Light snow"),
- N_("Moderate snow"),
- N_("Heavy snow"),
- N_("Shallow snow"),
- N_("Patches of snow"),
- N_("Partial snowfall"),
- N_("Snowstorm"),
- N_("Blowing snowfall"),
- N_("Snow showers"),
- N_("Drifting snow"),
- N_("Freezing snow")
-},
-/* SNOW_GRAINS */ {
- N_("Snow grains"),
- N_("Snow grains in the vicinity"),
- N_("Light snow grains"),
- N_("Moderate snow grains"),
- N_("Heavy snow grains"),
- N_("Shallow snow grains"),
- N_("Patches of snow grains"),
- N_("Partial snow grains"),
- N_("Snowstorm"),
- N_("Blowing snow grains"),
- N_("Snow grain showers"),
- N_("Drifting snow grains"),
- N_("Freezing snow grains")
-},
-/* ICE_CRYSTALS */ {
- N_("Ice crystals"),
- N_("Ice crystals in the vicinity"),
- N_("Few ice crystals"),
- N_("Moderate ice crystals"),
- N_("Heavy ice crystals"),
- "??",
- N_("Patches of ice crystals"),
- N_("Partial ice crystals"),
- N_("Ice crystal storm"),
- N_("Blowing ice crystals"),
- N_("Showers of ice crystals"),
- N_("Drifting ice crystals"),
- N_("Freezing ice crystals")
-},
-/* ICE_PELLETS */ {
- N_("Ice pellets"),
- N_("Ice pellets in the vicinity"),
- N_("Few ice pellets"),
- N_("Moderate ice pellets"),
- N_("Heavy ice pellets"),
- N_("Shallow ice pellets"),
- N_("Patches of ice pellets"),
- N_("Partial ice pellets"),
- N_("Ice pellet storm"),
- N_("Blowing ice pellets"),
- N_("Showers of ice pellets"),
- N_("Drifting ice pellets"),
- N_("Freezing ice pellets")
-},
-/* HAIL */ {
- N_("Hail"),
- N_("Hail in the vicinity"),
- N_("Light hail"),
- N_("Moderate hail"),
- N_("Heavy hail"),
- N_("Shallow hail"),
- N_("Patches of hail"),
- N_("Partial hail"),
- N_("Hailstorm"),
- N_("Blowing hail"),
- N_("Hail showers"),
- N_("Drifting hail"),
- N_("Freezing hail")
-},
-/* SMALL_HAIL */ {
- N_("Small hail"),
- N_("Small hail in the vicinity"),
- N_("Light hail"),
- N_("Moderate small hail"),
- N_("Heavy small hail"),
- N_("Shallow small hail"),
- N_("Patches of small hail"),
- N_("Partial small hail"),
- N_("Small hailstorm"),
- N_("Blowing small hail"),
- N_("Showers of small hail"),
- N_("Drifting small hail"),
- N_("Freezing small hail")
-},
-/* PRECIPITATION */ {
- N_("Unknown precipitation"),
- N_("Precipitation in the vicinity"),
- N_("Light precipitation"),
- N_("Moderate precipitation"),
- N_("Heavy precipitation"),
- N_("Shallow precipitation"),
- N_("Patches of precipitation"),
- N_("Partial precipitation"),
- N_("Unknown thunderstorm"),
- N_("Blowing precipitation"),
- N_("Showers, type unknown"),
- N_("Drifting precipitation"),
- N_("Freezing precipitation")
-},
-/* MIST */ {
- N_("Mist"),
- N_("Mist in the vicinity"),
- N_("Light mist"),
- N_("Moderate mist"),
- N_("Thick mist"),
- N_("Shallow mist"),
- N_("Patches of mist"),
- N_("Partial mist"),
- "??",
- N_("Mist with wind"),
- "??",
- N_("Drifting mist"),
- N_("Freezing mist")
-},
-/* FOG */ {
- N_("Fog"),
- N_("Fog in the vicinity"),
- N_("Light fog"),
- N_("Moderate fog"),
- N_("Thick fog"),
- N_("Shallow fog"),
- N_("Patches of fog"),
- N_("Partial fog"),
- "??",
- N_("Fog with wind"),
- "??",
- N_("Drifting fog"),
- N_("Freezing fog")
-},
-/* SMOKE */ {
- N_("Smoke"),
- N_("Smoke in the vicinity"),
- N_("Thin smoke"),
- N_("Moderate smoke"),
- N_("Thick smoke"),
- N_("Shallow smoke"),
- N_("Patches of smoke"),
- N_("Partial smoke"),
- N_("Thunderous smoke"),
- N_("Smoke with wind"),
- "??",
- N_("Drifting smoke"),
- "??"
-},
-/* VOLCANIC_ASH */ {
- N_("Volcanic ash"),
- N_("Volcanic ash in the vicinity"),
- "??",
- N_("Moderate volcanic ash"),
- N_("Thick volcanic ash"),
- N_("Shallow volcanic ash"),
- N_("Patches of volcanic ash"),
- N_("Partial volcanic ash"),
- N_("Thunderous volcanic ash"),
- N_("Blowing volcanic ash"),
- N_("Showers of volcanic ash"),
- N_("Drifting volcanic ash"),
- N_("Freezing volcanic ash")
-},
-/* SAND */ {
- N_("Sand"),
- N_("Sand in the vicinity"),
- N_("Light sand"),
- N_("Moderate sand"),
- N_("Heavy sand"),
- "??",
- N_("Patches of sand"),
- N_("Partial sand"),
- "??",
- N_("Blowing sand"),
- "",
- N_("Drifting sand"),
- "??"
-},
-/* HAZE */ {
- N_("Haze"),
- N_("Haze in the vicinity"),
- N_("Light haze"),
- N_("Moderate haze"),
- N_("Thick haze"),
- N_("Shallow haze"),
- N_("Patches of haze"),
- N_("Partial haze"),
- "??",
- N_("Haze with wind"),
- "??",
- N_("Drifting haze"),
- N_("Freezing haze")
-},
-/* SPRAY */ {
- N_("Spray"),
- N_("Spray in the vicinity"),
- N_("Light spray"),
- N_("Moderate spray"),
- N_("Heavy spray"),
- N_("Shallow spray"),
- N_("Patches of spray"),
- N_("Partial spray"),
- "??",
- N_("Blowing spray"),
- "??",
- N_("Drifting spray"),
- N_("Freezing spray")
-},
-/* DUST */ {
- N_("Dust"),
- N_("Dust in the vicinity"),
- N_("Light dust"),
- N_("Moderate dust"),
- N_("Heavy dust"),
- "??",
- N_("Patches of dust"),
- N_("Partial dust"),
- "??",
- N_("Blowing dust"),
- "??",
- N_("Drifting dust"),
- "??"
-},
-/* SQUALL */ {
- N_("Squall"),
- N_("Squall in the vicinity"),
- N_("Light squall"),
- N_("Moderate squall"),
- N_("Heavy squall"),
- "??",
- "??",
- N_("Partial squall"),
- N_("Thunderous squall"),
- N_("Blowing squall"),
- "??",
- N_("Drifting squall"),
- N_("Freezing squall")
-},
-/* SANDSTORM */ {
- N_("Sandstorm"),
- N_("Sandstorm in the vicinity"),
- N_("Light standstorm"),
- N_("Moderate sandstorm"),
- N_("Heavy sandstorm"),
- N_("Shallow sandstorm"),
- "??",
- N_("Partial sandstorm"),
- N_("Thunderous sandstorm"),
- N_("Blowing sandstorm"),
- "??",
- N_("Drifting sandstorm"),
- N_("Freezing sandstorm")
-},
-/* DUSTSTORM */ {
- N_("Duststorm"),
- N_("Duststorm in the vicinity"),
- N_("Light duststorm"),
- N_("Moderate duststorm"),
- N_("Heavy duststorm"),
- N_("Shallow duststorm"),
- "??",
- N_("Partial duststorm"),
- N_("Thunderous duststorm"),
- N_("Blowing duststorm"),
- "??",
- N_("Drifting duststorm"),
- N_("Freezing duststorm")
-},
-/* FUNNEL_CLOUD */ {
- N_("Funnel cloud"),
- N_("Funnel cloud in the vicinity"),
- N_("Light funnel cloud"),
- N_("Moderate funnel cloud"),
- N_("Thick funnel cloud"),
- N_("Shallow funnel cloud"),
- N_("Patches of funnel clouds"),
- N_("Partial funnel clouds"),
- "??",
- N_("Funnel cloud w/ wind"),
- "??",
- N_("Drifting funnel cloud"),
- "??"
-},
-/* TORNADO */ {
- N_("Tornado"),
- N_("Tornado in the vicinity"),
- "??",
- N_("Moderate tornado"),
- N_("Raging tornado"),
- "??",
- "??",
- N_("Partial tornado"),
- N_("Thunderous tornado"),
- N_("Tornado"),
- "??",
- N_("Drifting tornado"),
- N_("Freezing tornado")
-},
-/* DUST_WHIRLS */ {
- N_("Dust whirls"),
- N_("Dust whirls in the vicinity"),
- N_("Light dust whirls"),
- N_("Moderate dust whirls"),
- N_("Heavy dust whirls"),
- N_("Shallow dust whirls"),
- N_("Patches of dust whirls"),
- N_("Partial dust whirls"),
- "??",
- N_("Blowing dust whirls"),
- "??",
- N_("Drifting dust whirls"),
- "??"
-}
-};
-
-const char *
-weather_conditions_string (Weather *w)
-{
- if (!w->cond.significant) {
- return " ";
- } else {
- if (w->cond.phenomenon >= 0 &&
- w->cond.phenomenon < 24 &&
- w->cond.qualifier >= 0 &&
- w->cond.qualifier < 13) {
- return _(conditions_str[(int)w->cond.phenomenon][(int)w->cond.qualifier]);
- } else {
- return _("Invalid");
- }
- }
-}
-
-char *
-weather_temp_string (Weather *w)
-{
- char *temp;
- ESummaryWeatherUnits units;
-
- if (w->summary->preferences == NULL) {
- units = UNITS_METRIC;
- } else {
- units = w->summary->preferences->units;
- }
-
- temp = g_strdup_printf ("%.1f%s", w->temp, TEMP_UNIT_STR (units));
- return temp;
-}
-
-void
-metar_init_re (void)
-{
- static gboolean initialized = FALSE;
- if (initialized)
- return;
- initialized = TRUE;
-
- regcomp(&metar_re[TIME_RE], TIME_RE_STR, REG_EXTENDED);
- regcomp(&metar_re[WIND_RE], WIND_RE_STR, REG_EXTENDED);
- regcomp(&metar_re[VIS_RE], VIS_RE_STR, REG_EXTENDED);
- regcomp(&metar_re[CLOUD_RE], CLOUD_RE_STR, REG_EXTENDED);
- regcomp(&metar_re[TEMP_RE], TEMP_RE_STR, REG_EXTENDED);
- regcomp(&metar_re[PRES_RE], PRES_RE_STR, REG_EXTENDED);
- regcomp(&metar_re[COND_RE], COND_RE_STR, REG_EXTENDED);
-}
-
-static inline gint
-days_in_month (gint month,
- gint year)
-{
- if (month == 1)
- return ((year % 4) == 0) ? 29 : 28;
- else if (((month <= 6) && (month % 2 == 0)) || ((month >=7) && (month % 2 != 0)))
- return 31;
- else
- return 30;
-}
-
-/* FIX - there *must* be a simpler, less stupid way to do this!... */
-static time_t
-make_time (gint date,
- gint hour,
- gint min)
-{
- struct tm *tm;
- struct tm tms;
- time_t now;
- gint loc_mday, loc_hour, gm_mday, gm_hour;
- gint hour_diff; /* local time = UTC - hour_diff */
- gint is_dst;
-
- now = time(NULL);
-
- tm = gmtime(&now);
- gm_mday = tm->tm_mday;
- gm_hour = tm->tm_hour;
- memcpy(&tms, tm, sizeof(struct tm));
-
- tm = localtime(&now);
- loc_mday = tm->tm_mday;
- loc_hour = tm->tm_hour;
- is_dst = tm->tm_isdst;
-
- /* Estimate timezone */
- if (gm_mday == loc_mday)
- hour_diff = gm_hour - loc_hour;
- else
- if ((gm_mday == loc_mday + 1) || ((gm_mday == 1) && (loc_mday >= 27)))
- hour_diff = gm_hour + (24 - loc_hour);
- else
- hour_diff = -((24 - gm_hour) + loc_hour);
-
- /* Make time */
- tms.tm_min = min;
- tms.tm_sec = 0;
- tms.tm_hour = hour - hour_diff;
- tms.tm_mday = date;
- tms.tm_isdst = is_dst;
- if (tms.tm_hour < 0) {
- tms.tm_hour += 24;
- --tms.tm_mday;
- if (tms.tm_mday < 1) {
- --tms.tm_mon;
- if (tms.tm_mon < 0) {
- tms.tm_mon = 11;
- --tms.tm_year;
- }
- tms.tm_mday = days_in_month(tms.tm_mon, tms.tm_year + 1900);
- }
- } else if (tms.tm_hour > 23) {
- tms.tm_hour -= 24;
- ++tms.tm_mday;
- if (tms.tm_mday > days_in_month(tms.tm_mon, tms.tm_year + 1900)) {
- ++tms.tm_mon;
- if (tms.tm_mon > 11) {
- tms.tm_mon = 0;
- ++tms.tm_year;
- }
- tms.tm_mday = 1;
- }
- }
-
- return mktime(&tms);
-}
-
-gboolean
-metar_tok_time (char *token,
- Weather *w)
-{
- char sday[3], shr[3], smin[3];
- int day, hour, min;
-
- if (regexec (&metar_re[TIME_RE], token, 0, NULL, 0) == REG_NOMATCH) {
- return FALSE;
- }
-
- strncpy(sday, token, 2);
- sday[2] = 0;
- day = atoi (sday);
-
- strncpy (shr, token + 2, 2);
- shr[2] = 0;
- hour = atoi (shr);
-
- strncpy (smin, token + 4, 2);
- smin[2] = 0;
- min = atoi (smin);
-
- w->update = make_time (day, hour, min);
-
- return TRUE;
-}
-
-#define CONST_DIGITS "0123456789"
-
-gboolean
-metar_tok_wind (gchar *tokp,
- Weather *w)
-{
- char sdir[4], sspd[4], sgust[4];
- int dir, spd, gust = -1;
- char *gustp;
-
- if (regexec(&metar_re[WIND_RE], tokp, 0, NULL, 0) == REG_NOMATCH)
- return FALSE;
-
- strncpy(sdir, tokp, 3);
- sdir[3] = 0;
- dir = (!strcmp(sdir, "VRB")) ? -1 : atoi(sdir);
-
- memset(sspd, 0, sizeof(sspd));
- strncpy(sspd, tokp+3, strspn(tokp+3, CONST_DIGITS));
- spd = atoi(sspd);
-
- gustp = strchr(tokp, 'G');
- if (gustp) {
- memset(sgust, 0, sizeof(sgust));
- strncpy(sgust, gustp+1, strspn(gustp+1, CONST_DIGITS));
- gust = atoi(sgust);
- }
-
- if ((349 <= dir) && (dir <= 11))
- w->wind = WIND_N;
- else if ((12 <= dir) && (dir <= 33))
- w->wind = WIND_NNE;
- else if ((34 <= dir) && (dir <= 56))
- w->wind = WIND_NE;
- else if ((57 <= dir) && (dir <= 78))
- w->wind = WIND_ENE;
- else if ((79 <= dir) && (dir <= 101))
- w->wind = WIND_E;
- else if ((102 <= dir) && (dir <= 123))
- w->wind = WIND_ESE;
- else if ((124 <= dir) && (dir <= 146))
- w->wind = WIND_SE;
- else if ((147 <= dir) && (dir <= 168))
- w->wind = WIND_SSE;
- else if ((169 <= dir) && (dir <= 191))
- w->wind = WIND_S;
- else if ((192 <= dir) && (dir <= 213))
- w->wind = WIND_SSW;
- else if ((214 <= dir) && (dir <= 236))
- w->wind = WIND_SW;
- else if ((247 <= dir) && (dir <= 258))
- w->wind = WIND_WSW;
- else if ((259 <= dir) && (dir <= 281))
- w->wind = WIND_W;
- else if ((282 <= dir) && (dir <= 303))
- w->wind = WIND_WNW;
- else if ((304 <= dir) && (dir <= 326))
- w->wind = WIND_NW;
- else if ((327 <= dir) && (dir <= 348))
- w->wind = WIND_NNW;
-
- w->windspeed = (ESummaryWeatherWindSpeed)spd;
-
- return TRUE;
-}
-
-gboolean
-metar_tok_vis (gchar *tokp,
- Weather *w)
-{
- char *pfrac, *pend;
- char sval[4];
- int val;
-
- if (regexec(&metar_re[VIS_RE], tokp, 0, NULL, 0) == REG_NOMATCH)
- return FALSE;
-
- pfrac = strchr(tokp, '/');
- pend = strstr(tokp, "SM");
- memset(sval, 0, sizeof(sval));
-
- if (pfrac) {
- strncpy(sval, pfrac + 1, pend - pfrac - 1);
- val = atoi(sval);
- w->visibility = (*tokp == 'M') ? 0.001 : (1.0 / ((ESummaryWeatherVisibility)val));
- } else {
- strncpy(sval, tokp, pend - tokp);
- val = atoi(sval);
- w->visibility = (ESummaryWeatherVisibility)val;
- }
-
- return TRUE;
-}
-
-gboolean
-metar_tok_cloud (gchar *tokp,
- Weather *w)
-{
- char stype[4], salt[4];
- int alt = -1;
-
- if (regexec(&metar_re[CLOUD_RE], tokp, 0, NULL, 0) == REG_NOMATCH)
- return FALSE;
-
- strncpy(stype, tokp, 3);
- stype[3] = 0;
- if (strlen(tokp) == 6) {
- strncpy(salt, tokp+3, 3);
- salt[3] = 0;
- alt = atoi(salt); /* Altitude - currently unused */
- }
-
- if (!strcmp(stype, "CLR")) {
- w->sky = SKY_CLEAR;
- } else if (!strcmp(stype, "BKN")) {
- w->sky = SKY_BROKEN;
- } else if (!strcmp(stype, "SCT")) {
- w->sky = SKY_SCATTERED;
- } else if (!strcmp(stype, "FEW")) {
- w->sky = SKY_FEW;
- } else if (!strcmp(stype, "OVC")) {
- w->sky = SKY_OVERCAST;
- }
-
- return TRUE;
-}
-
-gboolean
-metar_tok_pres (gchar *tokp,
- Weather *w)
-{
- if (regexec(&metar_re[PRES_RE], tokp, 0, NULL, 0) == REG_NOMATCH)
- return FALSE;
-
- if (*tokp == 'A') {
- char sintg[3], sfract[3];
- int intg, fract;
-
- strncpy(sintg, tokp+1, 2);
- sintg[2] = 0;
- intg = atoi(sintg);
-
- strncpy(sfract, tokp+3, 2);
- sfract[2] = 0;
- fract = atoi(sfract);
-
- w->pressure = (ESummaryWeatherPressure)intg + (((ESummaryWeatherPressure)fract)/100.0);
- } else { /* *tokp == 'Q' */
- gchar spres[5];
- gint pres;
-
- strncpy(spres, tokp+1, 4);
- spres[4] = 0;
- pres = atoi(spres);
-
- w->pressure = PRESSURE_MBAR_TO_INCH((ESummaryWeatherPressure)pres);
- }
-
- return TRUE;
-}
-
-/* Relative humidity computation - thanks to <Olof.Oberg@modopaper.modogroup.com> */
-
-
-static inline gint
-calc_humidity(gdouble temp,
- gdouble dewp,
- ESummaryWeatherUnits units)
-{
- gdouble esat, esurf;
-
- if (units == UNITS_IMPERIAL) {
- temp = TEMP_F_TO_C(temp);
- dewp = TEMP_F_TO_C(dewp);
- }
-
- esat = 6.11 * pow(10.0, (7.5 * temp) / (237.7 + temp));
- esurf = 6.11 * pow(10.0, (7.5 * dewp) / (237.7 + dewp));
-
- return (gint)((esurf/esat) * 100.0);
-}
-
-gboolean
-metar_tok_temp (gchar *tokp,
- Weather *w)
-{
- ESummaryWeatherUnits units;
- gchar *ptemp, *pdew, *psep;
-
- if (regexec(&metar_re[TEMP_RE], tokp, 0, NULL, 0) == REG_NOMATCH)
- return FALSE;
-
- if (w->summary->preferences == NULL) {
- units = UNITS_METRIC;
- } else {
- units = w->summary->preferences->units;
- }
-
- psep = strchr(tokp, '/');
- *psep = 0;
- ptemp = tokp;
- pdew = psep + 1;
-
- if (units == UNITS_IMPERIAL) {
- w->temp = (*ptemp == 'M') ? TEMP_C_TO_F(-atoi(ptemp+1)) :
- TEMP_C_TO_F(atoi(ptemp));
- w->dew = (*pdew == 'M') ? TEMP_C_TO_F(-atoi(pdew+1)) :
- TEMP_C_TO_F(atoi(pdew));
- } else {
- w->temp = (*ptemp == 'M') ? -atoi(ptemp+1) : atoi(ptemp);
- w->dew = (*pdew == 'M') ? -atoi(pdew+1) : atoi (pdew);
- }
-
- w->humidity = calc_humidity(w->temp, w->dew, units);
- return TRUE;
-}
-
-gboolean
-metar_tok_cond (gchar *tokp,
- Weather *w)
-{
- char squal[3], sphen[4];
- char *pphen;
-
- if (regexec(&metar_re[COND_RE], tokp, 0, NULL, 0) == REG_NOMATCH)
- return FALSE;
-
- if ((strlen(tokp) > 3) && ((*tokp == '+') || (*tokp == '-')))
- ++tokp; /* FIX */
-
- if ((*tokp == '+') || (*tokp == '-'))
- pphen = tokp + 1;
- else if (strlen(tokp) < 4)
- pphen = tokp;
- else
- pphen = tokp + 2;
-
- memset(squal, 0, sizeof(squal));
- strncpy(squal, tokp, pphen - tokp);
- squal[pphen - tokp] = 0;
-
- memset(sphen, 0, sizeof(sphen));
- strncpy(sphen, pphen, sizeof(sphen));
- sphen[sizeof(sphen)-1] = '\0';
-
- /* Defaults */
- w->cond.qualifier = QUALIFIER_NONE;
- w->cond.phenomenon = PHENOMENON_NONE;
- w->cond.significant = FALSE;
-
- if (!strcmp(squal, "")) {
- w->cond.qualifier = QUALIFIER_MODERATE;
- } else if (!strcmp(squal, "-")) {
- w->cond.qualifier = QUALIFIER_LIGHT;
- } else if (!strcmp(squal, "+")) {
- w->cond.qualifier = QUALIFIER_HEAVY;
- } else if (!strcmp(squal, "VC")) {
- w->cond.qualifier = QUALIFIER_VICINITY;
- } else if (!strcmp(squal, "MI")) {
- w->cond.qualifier = QUALIFIER_SHALLOW;
- } else if (!strcmp(squal, "BC")) {
- w->cond.qualifier = QUALIFIER_PATCHES;
- } else if (!strcmp(squal, "PR")) {
- w->cond.qualifier = QUALIFIER_PARTIAL;
- } else if (!strcmp(squal, "TS")) {
- w->cond.qualifier = QUALIFIER_THUNDERSTORM;
- } else if (!strcmp(squal, "BL")) {
- w->cond.qualifier = QUALIFIER_BLOWING;
- } else if (!strcmp(squal, "SH")) {
- w->cond.qualifier = QUALIFIER_SHOWERS;
- } else if (!strcmp(squal, "DR")) {
- w->cond.qualifier = QUALIFIER_DRIFTING;
- } else if (!strcmp(squal, "FZ")) {
- w->cond.qualifier = QUALIFIER_FREEZING;
- } else {
- g_return_val_if_fail(FALSE, FALSE);
- }
-
- if (!strcmp(sphen, "DZ")) {
- w->cond.phenomenon = PHENOMENON_DRIZZLE;
- } else if (!strcmp(sphen, "RA")) {
- w->cond.phenomenon = PHENOMENON_RAIN;
- } else if (!strcmp(sphen, "SN")) {
- w->cond.phenomenon = PHENOMENON_SNOW;
- } else if (!strcmp(sphen, "SG")) {
- w->cond.phenomenon = PHENOMENON_SNOW_GRAINS;
- } else if (!strcmp(sphen, "IC")) {
- w->cond.phenomenon = PHENOMENON_ICE_CRYSTALS;
- } else if (!strcmp(sphen, "PE")) {
- w->cond.phenomenon = PHENOMENON_ICE_PELLETS;
- } else if (!strcmp(sphen, "GR")) {
- w->cond.phenomenon = PHENOMENON_HAIL;
- } else if (!strcmp(sphen, "GS")) {
- w->cond.phenomenon = PHENOMENON_SMALL_HAIL;
- } else if (!strcmp(sphen, "UP")) {
- w->cond.phenomenon = PHENOMENON_UNKNOWN_PRECIPITATION;
- } else if (!strcmp(sphen, "BR")) {
- w->cond.phenomenon = PHENOMENON_MIST;
- } else if (!strcmp(sphen, "FG")) {
- w->cond.phenomenon = PHENOMENON_FOG;
- } else if (!strcmp(sphen, "FU")) {
- w->cond.phenomenon = PHENOMENON_SMOKE;
- } else if (!strcmp(sphen, "VA")) {
- w->cond.phenomenon = PHENOMENON_VOLCANIC_ASH;
- } else if (!strcmp(sphen, "SA")) {
- w->cond.phenomenon = PHENOMENON_SAND;
- } else if (!strcmp(sphen, "HZ")) {
- w->cond.phenomenon = PHENOMENON_HAZE;
- } else if (!strcmp(sphen, "PY")) {
- w->cond.phenomenon = PHENOMENON_SPRAY;
- } else if (!strcmp(sphen, "DU")) {
- w->cond.phenomenon = PHENOMENON_DUST;
- } else if (!strcmp(sphen, "SQ")) {
- w->cond.phenomenon = PHENOMENON_SQUALL;
- } else if (!strcmp(sphen, "SS")) {
- w->cond.phenomenon = PHENOMENON_SANDSTORM;
- } else if (!strcmp(sphen, "DS")) {
- w->cond.phenomenon = PHENOMENON_DUSTSTORM;
- } else if (!strcmp(sphen, "PO")) {
- w->cond.phenomenon = PHENOMENON_DUST_WHIRLS;
- } else if (!strcmp(sphen, "+FC")) {
- w->cond.phenomenon = PHENOMENON_TORNADO;
- } else if (!strcmp(sphen, "FC")) {
- w->cond.phenomenon = PHENOMENON_FUNNEL_CLOUD;
- } else {
- g_return_val_if_fail(FALSE, FALSE);
- }
-
- if ((w->cond.qualifier != QUALIFIER_NONE) || (w->cond.phenomenon != PHENOMENON_NONE))
- w->cond.significant = TRUE;
-
- return TRUE;
-}
-
-const char *
-icon_from_weather (Weather *w)
-{
- ESummaryWeatherConditions cond = w->cond;
- ESummaryWeatherSky sky = w->sky;
-
- switch (cond.phenomenon) {
- case PHENOMENON_DRIZZLE:
- case PHENOMENON_RAIN:
- case PHENOMENON_UNKNOWN_PRECIPITATION:
- case PHENOMENON_HAIL:
- case PHENOMENON_SMALL_HAIL:
- return "myweather-rain.png";
- case PHENOMENON_SNOW:
- case PHENOMENON_SNOW_GRAINS:
- case PHENOMENON_ICE_PELLETS:
- case PHENOMENON_ICE_CRYSTALS:
- return "myweather-snow.png";
- case PHENOMENON_TORNADO:
- case PHENOMENON_SQUALL:
- return "myweather-storm.png";
- case PHENOMENON_MIST:
- case PHENOMENON_FOG:
- case PHENOMENON_SMOKE:
- case PHENOMENON_VOLCANIC_ASH:
- case PHENOMENON_SAND:
- case PHENOMENON_HAZE:
- case PHENOMENON_SPRAY:
- case PHENOMENON_DUST:
- case PHENOMENON_SANDSTORM:
- case PHENOMENON_DUSTSTORM:
- case PHENOMENON_FUNNEL_CLOUD:
- case PHENOMENON_DUST_WHIRLS:
- return "myweather-fog.png";
- default:
- break;
- }
-
- switch (sky) {
- case SKY_CLEAR:
- return "myweather-sun.png";
- case SKY_BROKEN:
- case SKY_SCATTERED:
- case SKY_FEW:
- return "myweather-suncloud.png";
- case SKY_OVERCAST:
- return "myweather-clouds.png";
- default:
- break;
- }
-
- return "es-weather.png";
-}
diff --git a/my-evolution/metar.h b/my-evolution/metar.h
deleted file mode 100644
index 91ec15d2a1..0000000000
--- a/my-evolution/metar.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * metar.h
- */
-
-#ifndef __METAR_H__
-#define __METAR_H__
-
-#define TIME_RE_STR "^([0-9]{6})Z$"
-#define WIND_RE_STR "^(([0-9]{3})|VRB)([0-9]?[0-9]{2})(G[0-9]?[0-9]{2})?KT$"
-#define VIS_RE_STR "^(([0-9]?[0-9])|(M?1/[0-9]?[0-9]))SM$"
-#define CLOUD_RE_STR "^(CLR|BKN|SCT|FEW|OVC)([0-9]{3})?$"
-#define TEMP_RE_STR "^(M?[0-9][0-9])/(M?[0-9][0-9])$"
-#define PRES_RE_STR "^(A|Q)([0-9]{4})$"
-#define COND_RE_STR "^(-|\\+)?(VC|MI|BC|PR|TS|BL|SH|DR|FZ)?(DZ|RA|SN|SG|IC|PE|GR|GS|UP|BR|FG|FU|VA|SA|HZ|PY|DU|SQ|SS|DS|PO|\\+?FC)$"
-
-enum {
- TIME_RE,
- WIND_RE,
- VIS_RE,
- CLOUD_RE,
- TEMP_RE,
- PRES_RE,
- COND_RE,
- RE_NUM
-};
-
-const char *weather_sky_string (Weather *w);
-char *weather_temp_string (Weather *w);
-const char *weather_conditions_string (Weather *w);
-const char *weather_wind_direction_string (Weather *w);
-const char *icon_from_weather (Weather *w);
-
-void metar_init_re (void);
-gboolean metar_tok_time (char *token,
- Weather *w);
-gboolean metar_tok_wind (char *tokp,
- Weather *w);
-gboolean metar_tok_vis (char *tokp,
- Weather *w);
-gboolean metar_tok_cloud (char *tokp,
- Weather *w);
-gboolean metar_tok_pres (char *tokp,
- Weather *w);
-gboolean metar_tok_temp (char *tokp,
- Weather *w);
-gboolean metar_tok_cond (char *tokp,
- Weather *w);
-#endif
diff --git a/my-evolution/my-evolution-html.h b/my-evolution/my-evolution-html.h
deleted file mode 100644
index 2e2300d002..0000000000
--- a/my-evolution/my-evolution-html.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-summary-weather.c
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Authors: Jakub Steiner <jimmac@ximian.com>
- * Iain Holmes <iain@ximian.com>
- */
-
-#ifdef NOT_ETTORE
-#define HTML_1 "<html><head></head><body background=\"bcg.png\" "\
-"bgcolor=\"white\" text=\"#000000\" link=\"#314e6c\" alink=\"black\" vlink=\"#314e6c\">"\
-"<img src=\"myevo.png\" alt=\"My Evolution\" width=\"200\" height=\"31\" border=\"0\"><br>"\
-"<img src=\"empty.gif\" alt=\"\" width=\"10\" height=\"20\">"\
-"<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"100%\">"\
-"<tbody><tr>"
-#else
-#define HTML_1 "<html><head></head><body background=\"bcg.png\" "\
-"bgcolor=\"white\" text=\"#000000\" link=\"#314e6c\" alink=\"black\" vlink=\"#314e6c\">"\
-"<img src=\"empty.gif\" alt=\"\" width=\"10\" height=\"20\">"\
-"<table border=\"0\" numcols=\"5\" cellspacing=\"0\" cellpadding=\"0\" width=\"100%\">"\
-"<tbody><tr>"
-#endif
-
-/* Needs a stringified date */
-#define HTML_2 "<td align=\"Right\" colspan=\"5\"><b>%s</b><br> <img src=\"empty.gif\" width=\"1\" height=\"3\"></td>"
-
-#define HTML_3 "</tr><tr><td colspan=\"5\" bgcolor=\"#000000\"><img src=\"empty.gif\" width=\"1\" height=\"1\"></td></tr>"\
-"<tr valign=\"Top\">" \
-"<td width=\"100%\">"\
-
-/* Weather stuff goes here */
-
-/* RDF Stuff goes here */
-
-#define HTML_4 "</td><td>&#160;</td><td width=\"1\" bgcolor=\"#000000\"><img src=\"empty.gif\" width=\"1\" height=\"1\"></td>"\
-"<td width=\"15\" background=\"pattern.png\">&nbsp&nbsp&nbsp</td>"\
-"<td width=\"0\" background=\"pattern.png\">"
-
-/* Mail stuff ici s'il vous plait */
-
-/* And then the calendar stuff */
-
-#ifdef NOT_ETTORE
-#define HTML_5 "<p align=\"Center\"><img src=\"evologo-big.png\" width=\"200\" height=\"216\" alt=\"\"></p><p>"\
-"<img src=\"empty.gif\" alt=\"\" width=\"290\" height=\"1\"></p></td>"\
-"<tr bgcolor=\"#000000\"><td colspan=\"\"><img src=\"empty.gif\" alt=\"\" width=\"10\" height=\"20\"></td></tr>"\
-"</tbody></table></body></html>"
-#else
-#define HTML_5 "<img src=\"empty.gif\" alt=\"\" width=\"290\" height=\"1\"></p></td>"\
-"<tr bgcolor=\"#000000\"><td colspan=\"5\"><img src=\"empty.gif\" alt=\"\" width=\"10\" height=\"1\"></td></tr>"\
-"</tbody></table></body></html>"
-#endif
-
diff --git a/my-evolution/my-evolution.glade b/my-evolution/my-evolution.glade
deleted file mode 100644
index 2c823e6f39..0000000000
--- a/my-evolution/my-evolution.glade
+++ /dev/null
@@ -1,626 +0,0 @@
-<?xml version="1.0"?>
-<GTK-Interface>
-
-<project>
- <name>Project1</name>
- <program_name>project1</program_name>
- <directory></directory>
- <source_directory>src</source_directory>
- <pixmaps_directory>pixmaps</pixmaps_directory>
- <language>C</language>
- <gnome_support>True</gnome_support>
- <gettext_support>True</gettext_support>
-</project>
-
-<widget>
- <class>GtkWindow</class>
- <name>window1</name>
- <visible>False</visible>
- <title>window2</title>
- <type>GTK_WINDOW_TOPLEVEL</type>
- <position>GTK_WIN_POS_NONE</position>
- <modal>False</modal>
- <allow_shrink>False</allow_shrink>
- <allow_grow>True</allow_grow>
- <auto_shrink>False</auto_shrink>
-
- <widget>
- <class>GtkNotebook</class>
- <name>notebook</name>
- <can_focus>True</can_focus>
- <show_tabs>True</show_tabs>
- <show_border>True</show_border>
- <tab_pos>GTK_POS_TOP</tab_pos>
- <scrollable>False</scrollable>
- <tab_hborder>2</tab_hborder>
- <tab_vborder>2</tab_vborder>
- <popup_enable>False</popup_enable>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox3</name>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
-
- <widget>
- <class>Custom</class>
- <name>mail-custom</name>
- <creation_function>e_summary_preferences_make_mail_table</creation_function>
- <int1>0</int1>
- <int2>0</int2>
- <last_modification_time>Tue, 29 Jan 2002 15:52:46 GMT</last_modification_time>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkCheckButton</class>
- <name>checkbutton1</name>
- <border_width>3</border_width>
- <can_focus>True</can_focus>
- <label>S_how full path for folders</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <child_name>Notebook:tab</child_name>
- <name>label5</name>
- <label>_Mail</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- </widget>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox6</name>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
-
- <widget>
- <class>Custom</class>
- <name>rdf-custom</name>
- <creation_function>e_summary_preferences_make_rdf_table</creation_function>
- <int1>0</int1>
- <int2>0</int2>
- <last_modification_time>Tue, 29 Jan 2002 15:53:47 GMT</last_modification_time>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame2</name>
- <border_width>3</border_width>
- <label>News Feed Settings</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkTable</class>
- <name>table4</name>
- <border_width>3</border_width>
- <rows>2</rows>
- <columns>5</columns>
- <homogeneous>False</homogeneous>
- <row_spacing>3</row_spacing>
- <column_spacing>3</column_spacing>
-
- <widget>
- <class>GtkLabel</class>
- <name>label25</name>
- <label>R_efresh time (seconds):</label>
- <justify>GTK_JUSTIFY_LEFT</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <focus_target>spinbutton1</focus_target>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label29</name>
- <label>Ma_x number of items shown:</label>
- <justify>GTK_JUSTIFY_LEFT</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <focus_target>spinbutton4</focus_target>
- <child>
- <left_attach>0</left_attach>
- <right_attach>1</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkSpinButton</class>
- <name>spinbutton1</name>
- <can_focus>True</can_focus>
- <climb_rate>1</climb_rate>
- <digits>0</digits>
- <numeric>False</numeric>
- <update_policy>GTK_UPDATE_ALWAYS</update_policy>
- <snap>False</snap>
- <wrap>False</wrap>
- <value>300</value>
- <lower>300</lower>
- <upper>1e+06</upper>
- <step>1</step>
- <page>10</page>
- <page_size>10</page_size>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkSpinButton</class>
- <name>spinbutton4</name>
- <can_focus>True</can_focus>
- <climb_rate>1</climb_rate>
- <digits>0</digits>
- <numeric>False</numeric>
- <update_policy>GTK_UPDATE_ALWAYS</update_policy>
- <snap>False</snap>
- <wrap>False</wrap>
- <value>1</value>
- <lower>0</lower>
- <upper>100</upper>
- <step>1</step>
- <page>10</page>
- <page_size>10</page_size>
- <child>
- <left_attach>1</left_attach>
- <right_attach>3</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>button11</name>
- <can_focus>True</can_focus>
- <label>Add n_ews feed</label>
- <relief>GTK_RELIEF_NORMAL</relief>
- <child>
- <left_attach>3</left_attach>
- <right_attach>5</right_attach>
- <top_attach>0</top_attach>
- <bottom_attach>1</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>False</xexpand>
- <yexpand>False</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <child_name>Notebook:tab</child_name>
- <name>label6</name>
- <label>_News Feeds</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- </widget>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox8</name>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
-
- <widget>
- <class>Custom</class>
- <name>weather-custom</name>
- <creation_function>e_summary_preferences_make_weather_table</creation_function>
- <int1>0</int1>
- <int2>0</int2>
- <last_modification_time>Tue, 29 Jan 2002 15:54:10 GMT</last_modification_time>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame3</name>
- <border_width>3</border_width>
- <label>Weather settings</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox11</name>
- <border_width>3</border_width>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox4</name>
- <homogeneous>False</homogeneous>
- <spacing>3</spacing>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label37</name>
- <label>Show temperatures in:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>radiobutton7</name>
- <can_focus>True</can_focus>
- <label>C_elsius</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>units_group</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>radiobutton8</name>
- <can_focus>True</can_focus>
- <label>_Fahrenheit</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>units_group</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox5</name>
- <homogeneous>False</homogeneous>
- <spacing>3</spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label38</name>
- <label>Refresh _time (seconds):</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <focus_target>spinbutton5</focus_target>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkSpinButton</class>
- <name>spinbutton5</name>
- <can_focus>True</can_focus>
- <climb_rate>1</climb_rate>
- <digits>0</digits>
- <numeric>False</numeric>
- <update_policy>GTK_UPDATE_ALWAYS</update_policy>
- <snap>False</snap>
- <wrap>False</wrap>
- <value>300</value>
- <lower>300</lower>
- <upper>1e+06</upper>
- <step>1</step>
- <page>10</page>
- <page_size>10</page_size>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <child_name>Notebook:tab</child_name>
- <name>label7</name>
- <label>_Weather</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- </widget>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox9</name>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame4</name>
- <border_width>3</border_width>
- <label>Calendar</label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox10</name>
- <homogeneous>False</homogeneous>
- <spacing>3</spacing>
-
- <widget>
- <class>GtkLabel</class>
- <name>label32</name>
- <label>How many days should the calendar display at once?</label>
- <justify>GTK_JUSTIFY_LEFT</justify>
- <wrap>False</wrap>
- <xalign>7.45058e-09</xalign>
- <yalign>0.5</yalign>
- <xpad>3</xpad>
- <ypad>0</ypad>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>True</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>radiobutton3</name>
- <can_focus>True</can_focus>
- <label>_One day</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>days_group</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>radiobutton4</name>
- <can_focus>True</can_focus>
- <label>_Five days</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>days_group</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>radiobutton5</name>
- <can_focus>True</can_focus>
- <label>One w_eek</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>days_group</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>radiobutton6</name>
- <can_focus>True</can_focus>
- <label>One mont_h</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>days_group</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkFrame</class>
- <name>frame5</name>
- <border_width>3</border_width>
- <label>Tasks </label>
- <label_xalign>0</label_xalign>
- <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>GtkHBox</class>
- <name>hbox3</name>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>radiobutton1</name>
- <can_focus>True</can_focus>
- <label>Show _all tasks</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>tasks_group</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
-
- <widget>
- <class>GtkRadioButton</class>
- <name>radiobutton2</name>
- <can_focus>True</can_focus>
- <label>Show _today's tasks</label>
- <active>False</active>
- <draw_indicator>True</draw_indicator>
- <group>tasks_group</group>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
- </widget>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <child_name>Notebook:tab</child_name>
- <name>label8</name>
- <label>_Schedule</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- </widget>
- </widget>
-</widget>
-
-</GTK-Interface>
diff --git a/my-evolution/weather.h b/my-evolution/weather.h
deleted file mode 100644
index 196b9a8017..0000000000
--- a/my-evolution/weather.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* weather.h
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Iain Holmes <iain@ximian.com>
- */
-
-#ifndef __WEATHER_H__
-#define __WEATHER_H__
-
-#include "e-summary-weather.h"
-
-#include <libsoup/soup.h>
-
-typedef struct _Weather {
- char *location;
- char *html;
-
- SoupMessage *message;
-
- ESummary *summary;
-
- gboolean valid;
- ESummaryWeatherLocation *loc;
- ESummaryWeatherUnits units;
- ESummaryWeatherUpdate update;
- ESummaryWeatherSky sky;
- ESummaryWeatherConditions cond;
- ESummaryWeatherTemperature temp;
- ESummaryWeatherTemperature dew;
- ESummaryWeatherHumidity humidity;
- ESummaryWeatherWindDir wind;
- ESummaryWeatherWindSpeed windspeed;
- ESummaryWeatherPressure pressure;
- ESummaryWeatherVisibility visibility;
- char *forecast;
-} Weather;
-
-#endif