aboutsummaryrefslogtreecommitdiffstats
path: root/my-evolution
diff options
context:
space:
mode:
Diffstat (limited to 'my-evolution')
-rw-r--r--my-evolution/.cvsignore12
-rw-r--r--my-evolution/ChangeLog485
-rw-r--r--my-evolution/GNOME_Evolution_Summary.oaf.in29
-rw-r--r--my-evolution/Locations3002
-rw-r--r--my-evolution/Makefile.am103
-rw-r--r--my-evolution/component-factory.c145
-rw-r--r--my-evolution/component-factory.h14
-rw-r--r--my-evolution/e-summary-calendar.c340
-rw-r--r--my-evolution/e-summary-calendar.h32
-rw-r--r--my-evolution/e-summary-factory.c140
-rw-r--r--my-evolution/e-summary-factory.h18
-rw-r--r--my-evolution/e-summary-mail.c538
-rw-r--r--my-evolution/e-summary-mail.h39
-rw-r--r--my-evolution/e-summary-offline-handler.c219
-rw-r--r--my-evolution/e-summary-offline-handler.h55
-rw-r--r--my-evolution/e-summary-preferences.c1421
-rw-r--r--my-evolution/e-summary-preferences.h15
-rw-r--r--my-evolution/e-summary-rdf.c660
-rw-r--r--my-evolution/e-summary-rdf.h21
-rw-r--r--my-evolution/e-summary-tasks.c354
-rw-r--r--my-evolution/e-summary-tasks.h21
-rw-r--r--my-evolution/e-summary-type.h14
-rw-r--r--my-evolution/e-summary-weather.c788
-rw-r--r--my-evolution/e-summary-weather.h134
-rw-r--r--my-evolution/e-summary.c741
-rw-r--r--my-evolution/e-summary.h131
-rw-r--r--my-evolution/main.c69
-rw-r--r--my-evolution/metar.c668
-rw-r--r--my-evolution/metar.h48
-rw-r--r--my-evolution/my-evolution-html.h52
-rw-r--r--my-evolution/my-evolution.glade1356
-rw-r--r--my-evolution/weather.h41
32 files changed, 0 insertions, 11705 deletions
diff --git a/my-evolution/.cvsignore b/my-evolution/.cvsignore
deleted file mode 100644
index ab0d765740..0000000000
--- a/my-evolution/.cvsignore
+++ /dev/null
@@ -1,12 +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
diff --git a/my-evolution/ChangeLog b/my-evolution/ChangeLog
deleted file mode 100644
index b7a56d49d4..0000000000
--- a/my-evolution/ChangeLog
+++ /dev/null
@@ -1,485 +0,0 @@
-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 eeffbe28c0..0000000000
--- a/my-evolution/GNOME_Evolution_Summary.oaf.in
+++ /dev/null
@@ -1,29 +0,0 @@
-<oaf_info>
-
-<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/ObjectFactory:1.0"/>
- </oaf_attribute>
-
- <oaf_attribute name="description" type="string"
- _value="Factory for the Evolution executive summary component."/>
-</oaf_server>
-
-<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 component for the executive summary."/>
-
- <oaf_attribute name="evolution:shell-component-icon" type="string"
- value="evolution-today.png"/>
-</oaf_server>
-
-</oaf_info>
diff --git a/my-evolution/Locations b/my-evolution/Locations
deleted file mode 100644
index f3b0a6baa7..0000000000
--- a/my-evolution/Locations
+++ /dev/null
@@ -1,3002 +0,0 @@
-[Main]
-regions=US CA 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=Frobisher CYFB ------ ---
-loc1=Iqaluit CYFB ------ ---
-loc2=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 ------ ---
-
-[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 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 EBAW ------ ---
-loc1=Beauvechain EBBE ------ ---
-loc2=Brasschaat EBBT ------ ---
-loc3=Brussels/National EBBR ------ ---
-loc4=Charleroi/Brussels\\ South EBCI ------ ---
-loc5=Chievres EBCV ------ ---
-loc6=Elsenborn EBLB ------ ---
-loc7=Florennes EBFS ------ ---
-loc8=Goetsenhoven EBTN ------ ---
-loc9=Kleine\\ Brogel EBBL ------ ---
-loc10=Koksijde EBFN ------ ---
-loc11=Liege EBLG ------ ---
-loc12=Oostende EBOS ------ ---
-loc13=Sint-Truiden EBST ------ ---
-loc14=? 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=Oslo/Fornebu ENFB ------ ---
-loc14=Fagernes ENFG ------ ---
-loc15=Floro ENFL ------ ---
-loc16=Frigg ENFR ------ ---
-loc17=Gullfax\\ C ENGC ------ ---
-loc18=Oslo/Gardenmoen ENGM ------ ---
-loc19=Haugesund ENHD ------ ---
-loc20=Hammerfest ENHF ------ ---
-loc21=Honningsvag ENHV ------ ---
-loc22=Kristiansund/Kvernberget ENKB ------ ---
-loc23=Kirkenes ENKR ------ ---
-loc24=Lista ENLI ------ ---
-loc25=Leknes ENLK ------ ---
-loc26=Mehamn ENMH ------ ---
-loc27=Molde ENML ------ ---
-loc28=Mosjoen ENMS ------ ---
-loc29=Banak ENNA ------ ---
-loc30=Narvik ENNK ------ ---
-loc31=Namsos ENNM ------ ---
-loc32=Notodden ENNO ------ ---
-loc33=Oseberg\\ A ENOA ------ ---
-loc34=Orland ENOL ------ ---
-loc35=Orsta-Volda ENOV ------ ---
-loc36=Mo\\ I\\ Rana ENRA ------ ---
-loc37=Rorvik/Ryum ENRM ------ ---
-loc38=Roros ENRO ------ ---
-loc39=Rost ENRS ------ ---
-loc40=Rygge ENRY ------ ---
-loc41=Svalbard ENSB ------ ---
-loc42=Sandane ENSD ------ ---
-loc43=Sogndal ENSG ------ ---
-loc44=Svolvaer/Helle ENSH ------ ---
-loc45=Stokmarknes/Skagen ENSK ------ ---
-loc46=Skien/Geiteryggen ENSN ------ ---
-loc47=Stord/Sorstokken ENSO ------ ---
-loc48=Sorkjosen ENSR ------ ---
-loc49=Sandnessjoen/Stokka ENST ------ ---
-loc50=Tromso/Langnes ENTC ------ ---
-loc51=Torp ENTO ------ ---
-loc52=Trondheim/Vaernes ENVA ------ ---
-loc53=Vadso ENVD ------ ---
-loc54=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_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-Genoirs 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
-
-[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 ------ ---
-
-[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 MX 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 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 ------ ---
-
-[M__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 ------ ---
-
-[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/Makefile.am b/my-evolution/Makefile.am
deleted file mode 100644
index 81eadaa2dd..0000000000
--- a/my-evolution/Makefile.am
+++ /dev/null
@@ -1,103 +0,0 @@
-bin_PROGRAMS = evolution-executive-summary
-
-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 \
- $(EXTRA_GNOME_CFLAGS) \
- $(GNOME_VFS_CFLAGS) \
- $(GTKHTML_CFLAGS) \
- $(BONOBO_CONF_CFLAGS) \
- -DEVOLUTION_GLADEDIR=\""$(gladedir)"\" \
- -DEVOLUTION_LOCALEDIR=\""$(localedir)"\" \
- -DEVOLUTION_DATADIR=\""$(datadir)"\" \
- -DG_LOG_DOMAIN=\"evolution-executive-summary\"
-
-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
-
-evolution_executive_summary_SOURCES = \
- $(MAIL_GENERATED) \
- component-factory.c \
- component-factory.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-tasks.c \
- e-summary-tasks.h \
- e-summary-type.h \
- e-summary-weather.c \
- e-summary-weather.h \
- main.c \
- metar.c \
- metar.h \
- my-evolution-html.h \
- weather.h
-
-evolution_executive_summary_LDADD = \
- $(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.la \
- $(top_builddir)/libical/src/libical/libical.la \
- $(top_builddir)/libwombat/libwombat.la \
- $(BONOBO_VFS_GNOME_LIBS) \
- $(BONOBO_CONF_LIBS) \
- $(EXTRA_GNOME_LIBS) \
- -lgal \
- $(GTKHTML_LIBS)
-
-Locationdir = $(datadir)/evolution
-Location_DATA = Locations
-
-oafdir = $(datadir)/oaf
-oaf_in_files = GNOME_Evolution_Summary.oaf.in
-oaf_DATA = $(oaf_in_files:.oaf.in=.oaf)
-
-gladedir = $(datadir)/evolution/glade
-glade_DATA = my-evolution.glade
-
-@XML_I18N_MERGE_OAF_RULE@
-
-EXTRA_DIST = $(oaf_in_files) $(oaf_DATA) $(Location_DATA) $(glade_DATA)
-
-if ENABLE_PURIFY
-PLINK = $(LIBTOOL) --mode=link $(PURIFY) $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
-
-all-local: evolution-executive-summary.pure
-
-evolution-executive-summary.pure: evolution-executive-summary
- @rm -f evolution-executive-summary.pure
- $(PLINK) $(evolution_executive_summary_OBJECTS) $(evolution_executive_summary_LDADD) $(LIBS)
-
-endif
-
-dist-hook:
- cd $(distdir); rm -f $(BUILT_SOURCES)
diff --git a/my-evolution/component-factory.c b/my-evolution/component-factory.c
deleted file mode 100644
index 659342506f..0000000000
--- a/my-evolution/component-factory.c
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * component-factory.c: Component factory registration for Executive Summary.
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Authors: 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 <shell/evolution-shell-component.h>
-#include <shell/Evolution.h>
-
-#include "e-summary-factory.h"
-#include "e-summary-offline-handler.h"
-#include "component-factory.h"
-#include <gal/widgets/e-gui-utils.h>
-
-#define COMPONENT_FACTORY_IID "OAFIID:GNOME_Evolution_Summary_ShellComponentFactory"
-
-static gint running_objects = 0;
-
-static const EvolutionShellComponentFolderType folder_types[] = {
- { "My Evolution", "evolution-today.png", 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,
- BonoboControl **control_return,
- void *closure)
-{
- EvolutionShellClient *shell_client;
- ESummaryOfflineHandler *offline_handler;
- GNOME_Evolution_Shell corba_shell;
- BonoboControl *control;
-
-
- if (g_strcasecmp (folder_type, "My Evolution") != 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);
- 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)
-{
- if (evolution_dir != NULL) {
- evolution_dir = g_strdup (evolution_homedir);
- }
-}
-
-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 *
-factory_fn (BonoboGenericFactory *factory,
- void *closure)
-{
- EvolutionShellComponent *shell_component;
- ESummaryOfflineHandler *offline_handler;
-
- running_objects++;
-
- 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);
-}
-
-void
-component_factory_init (void)
-{
- BonoboGenericFactory *object;
-
- object = bonobo_generic_factory_new (COMPONENT_FACTORY_IID,
- factory_fn, NULL);
-
- if (object == NULL) {
- e_notice (NULL, GNOME_MESSAGE_BOX_ERROR,
- _("Cannot initialize Evolution's Executive Summary component."));
- exit (1);
- }
-
- bonobo_running_context_auto_exit_unref (BONOBO_OBJECT (object));
-}
diff --git a/my-evolution/component-factory.h b/my-evolution/component-factory.h
deleted file mode 100644
index f4b0c0e1a8..0000000000
--- a/my-evolution/component-factory.h
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- * component-factory.h: Header file for component-factory.c
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Authors: 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-summary-calendar.c b/my-evolution/e-summary-calendar.c
deleted file mode 100644
index 442bf1db6e..0000000000
--- a/my-evolution/e-summary-calendar.c
+++ /dev/null
@@ -1,340 +0,0 @@
-/*
- * e-summary-calendar.c:
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Authors: 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>
-
-struct _ESummaryCalendar {
- CalClient *client;
-
- char *html;
-};
-
-const char *
-e_summary_calendar_get_html (ESummary *summary)
-{
- if (summary->calendar == NULL) {
- return NULL;
- }
-
- return summary->calendar->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;
- ESummary *summary = user_data;
- ESummaryCalendar *calendar = summary->calendar;
- CalClientGetStatus status;
- CalComponentDateTime start_a, start_b;
-
- /* a after b then return > 0 */
-
- status = cal_client_get_object (calendar->client, a, &comp_a);
- if (status != CAL_CLIENT_GET_SUCCESS)
- return -1;
-
- status = cal_client_get_object (calendar->client, b, &comp_b);
- if (status != CAL_CLIENT_GET_SUCCESS)
- return 1;
-
- cal_component_get_dtstart (comp_a, &start_a);
- cal_component_get_dtstart (comp_b, &start_b);
-
- return icaltime_compare (*start_a.value, *start_b.value);
-}
-
-static gboolean
-generate_html (gpointer data)
-{
- ESummary *summary = data;
- ESummaryCalendar *calendar = summary->calendar;
- GList *uids, *l;
- GString *string;
- char *tmp;
- time_t t, begin, end, f;
-
- t = time (NULL);
- begin = time_day_begin (t);
- switch (summary->preferences->days) {
- case E_SUMMARY_CALENDAR_ONE_DAY:
- end = time_day_end (t);
- break;
-
- case E_SUMMARY_CALENDAR_FIVE_DAYS:
- f = time_add_day (t, 5);
- end = time_day_end (f);
- break;
-
- case E_SUMMARY_CALENDAR_ONE_WEEK:
- f = time_add_week (t, 1);
- end = time_day_end (f);
- break;
-
- case E_SUMMARY_CALENDAR_ONE_MONTH:
- f = time_add_month (t, 1);
- end = time_day_end (f);
- 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 {
- char *s;
-
- uids = cal_list_sort (uids, sort_uids, summary);
-
- 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>");
- for (l = uids; l; l = l->next) {
- char *uid, *start_str;
- CalComponent *comp;
- CalComponentText text;
- CalClientGetStatus status;
- CalComponentDateTime start, end;
- time_t start_t, dt;
- struct tm *start_tm;
-
- uid = l->data;
- status = cal_client_get_object (calendar->client, uid, &comp);
- if (status != CAL_CLIENT_GET_SUCCESS) {
- continue;
- }
-
- cal_component_get_summary (comp, &text);
- cal_component_get_dtstart (comp, &start);
- cal_component_get_dtend (comp, &end);
-
- start_t = icaltime_as_timet (*start.value);
-
- start_str = g_new (char, 20);
- start_tm = localtime (&start_t);
- dt = start_t - t;
- /* 86400 == 1 day
- 604800 == 1 week
- Otherwise: Month */
- if (dt < 86400) {
- strftime (start_str, 19, _("%l:%M%p"), start_tm);
- } else if (dt < 604800) {
- strftime (start_str, 19, _("%a %l:%M%p"), start_tm);
- } else {
- strftime (start_str, 19, _("%d %B"), start_tm);
- }
-
- tmp = g_strdup_printf ("<img align=\"middle\" src=\"es-appointments.png\" "
- "alt=\"\" width=\"16\" height=\"16\"> &#160; "
- "<font size=\"-1\"><a href=\"evolution:/local/Calendar\">%s, %s</a></font><br>",
- start_str, text.value);
- g_free (start_str);
-
- g_string_append (string, tmp);
- g_free (tmp);
- }
-
- cal_obj_uid_list_free (uids);
- 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)
-{
-
-}
-
-void
-e_summary_calendar_init (ESummary *summary)
-{
- ESummaryCalendar *calendar;
- gboolean result;
- char *uri;
-
- g_return_if_fail (summary != NULL);
-
- calendar = g_new (ESummaryCalendar, 1);
- summary->calendar = calendar;
- calendar->html = NULL;
-
- calendar->client = cal_client_new ();
- if (calendar->client == 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);
-
- uri = gnome_util_prepend_user_home ("evolution/local/Calendar/calendar.ics");
- result = cal_client_open_calendar (calendar->client, uri, FALSE);
- g_free (uri);
- if (result == FALSE) {
- g_message ("Open calendar failed");
- }
-
- e_summary_add_protocol_listener (summary, "calendar", e_summary_calendar_protocol, calendar);
-}
-
-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 bad6d783cc..0000000000
--- a/my-evolution/e-summary-calendar.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * e-summary-calendar.h
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Authors: 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 e6e5f75e85..0000000000
--- a/my-evolution/e-summary-factory.c
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * e-summary-factory.c: Executive Summary Factory.
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Authors: 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 ("ToolsSettings", e_summary_configure),
- BONOBO_UI_VERB_END
-};
-
-
-static EPixmap pixmaps [] = {
- E_PIXMAP ("/commands/PrintMyEvolution", "print.xpm"),
- E_PIXMAP ("/commands/ToolsSettings", "configure_16_mail.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);
-}
-
-static void
-control_deactivate (BonoboControl *control,
- BonoboUIComponent *ui_component,
- ESummary *summary)
-{
- bonobo_ui_component_unset_container (ui_component);
-}
-
-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)
-{
- BonoboControl *control;
- GtkWidget *summary;
-
- summary = e_summary_new (shell);
- if (summary == NULL) {
- return NULL;
- }
-
- e_summary_offline_handler_set_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);
-
- return control;
-}
diff --git a/my-evolution/e-summary-factory.h b/my-evolution/e-summary-factory.h
deleted file mode 100644
index 858bca9956..0000000000
--- a/my-evolution/e-summary-factory.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * e-summary-factory.c: Executive Summary Factory.
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Authors: Iain Holmes <iain@ximian.com>
- */
-
-#ifndef __E_SUMMARY_FACTORY_H__
-#define __E_SUMMARY_FACTORY_H__
-
-#include "e-summary-offline-handler.h"
-
-BonoboControl *e_summary_factory_new_control (const char *uri,
- const GNOME_Evolution_Shell shell,
- ESummaryOfflineHandler *handler);
-
-#endif
diff --git a/my-evolution/e-summary-mail.c b/my-evolution/e-summary-mail.c
deleted file mode 100644
index b024e42c4f..0000000000
--- a/my-evolution/e-summary-mail.c
+++ /dev/null
@@ -1,538 +0,0 @@
-/*
- * e-summary-mail.c: Mail summary bit.
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Authors: Iain Holmes <iain@ximian.com>
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <liboaf/liboaf.h>
-#include <gal/widgets/e-unicode.h>
-
-#include "Mail.h"
-#include "e-summary.h"
-#include "e-summary-mail.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 <Evolution.h>
-#include <evolution-storage-listener.h>
-
-#define MAIL_IID "OAFIID:GNOME_Evolution_FolderInfo"
-
-struct _ESummaryMail {
- GNOME_Evolution_FolderInfo folder_info;
- BonoboListener *listener;
- EvolutionStorageListener *storage_listener;
-
- GHashTable *folders;
- GList *shown;
- ESummaryMailMode mode;
-
- char *html;
-};
-
-typedef struct _ESummaryMailFolder {
- char *name;
- char *path;
-
- int count;
- int unread;
-} ESummaryMailFolder;
-
-const char *
-e_summary_mail_get_html (ESummary *summary)
-{
- if (summary->mail == NULL) {
- return NULL;
- }
-
- return summary->mail->html;
-}
-
-/* Work out what to do with folder names */
-static char *
-make_pretty_foldername (const char *foldername)
-{
- char *pretty;
-
- if ((pretty = strrchr (foldername, '/'))) {
- return g_strdup (pretty + 1);
- } else {
- return g_strdup (foldername);
- }
-}
-
-static void
-folder_gen_html (ESummaryMailFolder *folder,
- GString *string)
-{
- char *str, *pretty_name, *uri;
-
- pretty_name = make_pretty_foldername (folder->name);
- uri = g_strconcat ("evolution:/local", folder->name, NULL);
- str = g_strdup_printf ("<tr><td><a href=\"%s\"><pre>%s</pre></a></td><td align=\"Left\"><pre>%d/%d</pre></td></tr>",
- uri, pretty_name, folder->unread, folder->count);
- g_free (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;
- gchar *s;
-
- 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 = mail->shown; p; p = p->next) {
- folder_gen_html (p->data, string);
- }
-
- g_string_append (string, "</table></dd></dl>");
- mail->html = string->str;
- g_string_free (string, FALSE);
-}
-
-static void
-e_summary_mail_get_info (ESummaryMail *mail,
- const char *uri,
- BonoboListener *listener)
-{
- Bonobo_Listener corba_listener;
- CORBA_Environment ev;
-
- g_return_if_fail (mail != NULL);
- g_return_if_fail (mail->folder_info != CORBA_OBJECT_NIL);
-
- corba_listener = bonobo_object_corba_objref (BONOBO_OBJECT (listener));
- CORBA_exception_init (&ev);
- GNOME_Evolution_FolderInfo_getInfo (mail->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,
- ESummary *summary)
-{
- ESummaryMail *mail;
- ESummaryMailFolder *mail_folder;
- GList *p;
-
- /* Don't care about non mail */
- if (strcmp (folder->type, "mail") != 0 ||
- strncmp (folder->physical_uri, "file://", 7) != 0) {
- return;
- }
-
- mail = summary->mail;
-
- mail_folder = g_new (ESummaryMailFolder, 1);
- mail_folder->path = g_strdup (folder->physical_uri);
- mail_folder->name = g_strdup (path);
- mail_folder->count = -1;
- mail_folder->unread = -1;
-
- g_hash_table_insert (mail->folders, mail_folder->path, mail_folder);
-
- /* Are we supposed to display this folder? */
- for (p = summary->preferences->display_folders; p; p = p->next) {
- char *uri;
-
- uri = g_strconcat ("file://", p->data, NULL);
- if (strcmp (uri, mail_folder->path) == 0) {
- mail->shown = g_list_prepend (mail->shown, mail_folder);
- }
-
- g_free (uri);
- }
-
- e_summary_mail_get_info (mail, mail_folder->path, mail->listener);
-}
-
-static void
-update_folder_cb (EvolutionStorageListener *listener,
- const char *path,
- const char *display_name,
- ESummary *summary)
-{
- char *evolution_dir;
- char *proto;
- char *uri;
-
- evolution_dir = gnome_util_prepend_user_home ("evolution/local");
-
- proto = g_strconcat ("file://", evolution_dir, NULL);
- uri = e_path_to_physical (proto, path);
- printf ("uri in update: %s\n", uri);
-
- e_summary_mail_get_info (summary->mail, uri, summary->mail->listener);
-
- g_free (uri);
- g_free (evolution_dir);
- g_free (proto);
-}
-
-static void
-remove_folder_cb (EvolutionStorageListener *listener,
- const char *path,
- ESummary *summary)
-{
- ESummaryMail *mail;
- ESummaryMailFolder *mail_folder;
- GList *p;
-
- mail = summary->mail;
- mail_folder = g_hash_table_lookup (mail->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 = mail->shown; p; p = p->next) {
- if (p->data == mail_folder) {
- mail->shown = g_list_remove_link (mail->shown, p);
- g_list_free (p);
- }
- }
-
- g_hash_table_remove (mail->folders, path);
- g_free (mail_folder->name);
- g_free (mail_folder->path);
- g_free (mail_folder);
-}
-
-static void
-mail_change_notify (BonoboListener *listener,
- const char *name,
- const BonoboArg *arg,
- CORBA_Environment *ev,
- ESummary *summary)
-{
- GNOME_Evolution_FolderInfo_MessageCount *count;
- ESummaryMail *mail;
- ESummaryMailFolder *folder;
-
- mail = summary->mail;
-
- count = arg->_value;
- folder = g_hash_table_lookup (mail->folders, count->path);
-
- if (folder == NULL) {
- return;
- }
-
- folder->count = count->count;
- folder->unread = count->unread;
-
- /* Regen HTML */
- e_summary_mail_generate_html (summary);
- e_summary_draw (summary);
-}
-
-static void
-e_summary_mail_protocol (ESummary *summary,
- const char *uri,
- void *closure)
-{
-}
-
-static gboolean
-e_summary_mail_register_storage (ESummary *summary,
- GNOME_Evolution_Storage corba_storage)
-{
- ESummaryMail *mail;
- EvolutionStorageListener *listener;
- GNOME_Evolution_StorageListener corba_listener;
- CORBA_Environment ev;
-
- mail = summary->mail;
-
- if (mail->storage_listener == NULL) {
- mail->storage_listener = evolution_storage_listener_new ();
-
- gtk_signal_connect (GTK_OBJECT (mail->storage_listener), "new-folder",
- GTK_SIGNAL_FUNC (new_folder_cb), summary);
- gtk_signal_connect (GTK_OBJECT (mail->storage_listener), "removed-folder",
- GTK_SIGNAL_FUNC (remove_folder_cb), summary);
- gtk_signal_connect (GTK_OBJECT (mail->storage_listener), "update_folder",
- GTK_SIGNAL_FUNC (update_folder_cb), summary);
- }
- listener = mail->storage_listener;
-
- corba_listener = evolution_storage_listener_corba_objref (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);
-
- g_free (mail);
- return FALSE;
- }
-
- CORBA_exception_free (&ev);
-
- return TRUE;
-}
-
-static gboolean
-e_summary_mail_register_storages (ESummary *summary,
- GNOME_Evolution_Shell corba_shell)
-{
- GNOME_Evolution_Storage local_storage;
- CORBA_Environment ev;
-
- g_return_val_if_fail (summary != NULL, FALSE);
- g_return_val_if_fail (IS_E_SUMMARY (summary), FALSE);
-
- CORBA_exception_init (&ev);
- local_storage = GNOME_Evolution_Shell_getLocalStorage (corba_shell, &ev);
- if (BONOBO_EX (&ev)) {
- g_warning ("Exception getting local storage: %s",
- CORBA_exception_id (&ev));
- CORBA_exception_free (&ev);
-
- return FALSE;
- }
- CORBA_exception_free (&ev);
-
- if (e_summary_mail_register_storage (summary, local_storage))
- return TRUE;
- else
- return FALSE;
-}
-
-void
-e_summary_mail_init (ESummary *summary,
- GNOME_Evolution_Shell corba_shell)
-{
- ESummaryMail *mail;
- CORBA_Environment ev;
-
- g_return_if_fail (summary != NULL);
- g_return_if_fail (IS_E_SUMMARY (summary));
-
- mail = g_new0 (ESummaryMail, 1);
- summary->mail = mail;
-
- CORBA_exception_init (&ev);
- mail->folder_info = oaf_activate_from_id (MAIL_IID, 0, NULL, &ev);
- if (BONOBO_EX (&ev)) {
- g_warning ("Exception creating FolderInfo: %s",
- CORBA_exception_id (&ev));
- CORBA_exception_free (&ev);
-
- g_free (mail);
- return;
- }
-
- /* Create a BonoboListener for all the notifies. */
- mail->listener = bonobo_listener_new (NULL, NULL);
- gtk_signal_connect (GTK_OBJECT (mail->listener), "event-notify",
- GTK_SIGNAL_FUNC (mail_change_notify), summary);
-
- /* Create a hash table for the folders */
- mail->folders = g_hash_table_new (g_str_hash, g_str_equal);
- mail->shown = NULL;
-
- e_summary_mail_register_storages (summary, corba_shell);
- e_summary_add_protocol_listener (summary, "mail", e_summary_mail_protocol, mail);
- return;
-}
-
-static void
-maybe_add_to_shown (gpointer key,
- gpointer value,
- gpointer user_data)
-{
- ESummary *summary = user_data;
- ESummaryMailFolder *folder = value;
- ESummaryMail *mail = summary->mail;
- GList *p;
-
- /* Are we supposed to display this folder? */
- for (p = summary->preferences->display_folders; p; p = p->next) {
- char *uri;
-
- uri = g_strconcat ("file://", p->data, NULL);
- if (strcmp (uri, folder->path) == 0) {
- mail->shown = g_list_prepend (mail->shown, folder);
- }
-
- g_free (uri);
- }
-}
-
-void
-e_summary_mail_reconfigure (ESummary *summary)
-{
- ESummaryMail *mail;
- GList *old;
-
- g_return_if_fail (summary != NULL);
- g_return_if_fail (IS_E_SUMMARY (summary));
-
- mail = summary->mail;
- old = mail->shown;
- mail->shown = NULL;
- g_hash_table_foreach (mail->folders, maybe_add_to_shown, summary);
- e_summary_mail_generate_html (summary);
-
- /* Free the old list */
- g_list_free (old);
-
- e_summary_draw (summary);
-}
-
-static void
-free_row_data (gpointer data)
-{
- ESummaryMailRowData *rd = data;
-
- g_free (rd->name);
- g_free (rd->uri);
- g_free (rd);
-}
-
-static void
-hash_to_list (gpointer key,
- gpointer value,
- gpointer data)
-{
- ESummaryMailRowData *rd;
- ESummaryMailFolder *folder;
- GList **p;
-
- p = (GList **) data;
- folder = (ESummaryMailFolder *) value;
-
- rd = g_new (ESummaryMailRowData, 1);
- rd->name = g_strdup (folder->name);
- rd->uri = g_strdup (key);
-
- *p = g_list_prepend (*p, rd);
-}
-
-static int
-str_compare (gconstpointer a,
- gconstpointer b)
-{
- ESummaryMailRowData *rda, *rdb;
-
- rda = (ESummaryMailRowData *) a;
- rdb = (ESummaryMailRowData *) b;
- return strcmp (rda->name, rdb->name);
-}
-
-void
-e_summary_mail_fill_list (GtkCList *clist,
- ESummary *summary)
-{
- ESummaryMail *mail;
- GList *names = NULL, *p;
-
- mail = summary->mail;
- if (mail == NULL) {
- return;
- }
-
- g_hash_table_foreach (mail->folders, hash_to_list, &names);
-
- names = g_list_sort (names, str_compare);
- for (p = names; p; p = p->next) {
- ESummaryMailRowData *rd;
- char *text[1];
- int row;
-
- rd = p->data;
- text[0] = rd->name + 1;
- row = gtk_clist_append (clist, text);
- gtk_clist_set_row_data_full (clist, row, rd, free_row_data);
- }
-
- g_list_free (names);
-}
-
-const char *
-e_summary_mail_uri_to_name (ESummary *summary,
- const char *uri)
-{
- ESummaryMailFolder *folder;
-
- folder = g_hash_table_lookup (summary->mail->folders, uri);
- if (folder == NULL) {
- return NULL;
- } else {
- return folder->name;
- }
-}
-
-static void
-free_folder (gpointer key,
- gpointer value,
- gpointer data)
-{
- ESummaryMailFolder *folder = value;
-
- g_free (folder->name);
- g_free (folder->path);
- g_free (folder);
-}
-
-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;
- bonobo_object_release_unref (mail->folder_info, NULL);
- bonobo_object_unref (BONOBO_OBJECT (mail->listener));
-
- g_hash_table_foreach (mail->folders, free_folder, NULL);
- g_hash_table_destroy (mail->folders);
-
- g_free (mail->html);
-
- g_free (mail);
- summary->mail = NULL;
-}
diff --git a/my-evolution/e-summary-mail.h b/my-evolution/e-summary-mail.h
deleted file mode 100644
index 9af0572a53..0000000000
--- a/my-evolution/e-summary-mail.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * e-summary-mail.h
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Authors: Iain Holmes <iain@ximian.com>
- */
-
-#ifndef __E_SUMMARY_MAIL_H__
-#define __E_SUMMARY_MAIL_H__
-
-#include "e-summary-type.h"
-#include <Evolution.h>
-#include <gtk/gtkclist.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,
- GNOME_Evolution_Shell corba_shell);
-void e_summary_mail_reconfigure (ESummary *summary);
-void e_summary_mail_free (ESummary *summary);
-void e_summary_mail_fill_list (GtkCList *clist,
- ESummary *summary);
-const char *e_summary_mail_uri_to_name (ESummary *summary,
- const char *uri);
-#endif
diff --git a/my-evolution/e-summary-offline-handler.c b/my-evolution/e-summary-offline-handler.c
deleted file mode 100644
index 8feaec10c1..0000000000
--- a/my-evolution/e-summary-offline-handler.c
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
- * e-summary-offline-handler.c:
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * 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 {
- ESummary *summary;
- GNOME_Evolution_OfflineProgressListener listener_interface;
-};
-
-static GNOME_Evolution_ConnectionList *
-create_connection_list (ESummary *summary)
-{
- GNOME_Evolution_ConnectionList *list;
- GList *connections, *p;
-
- list = GNOME_Evolution_ConnectionList__alloc ();
- list->_length = 0;
- list->_maximum = e_summary_count_connections (summary);
- list->_buffer = CORBA_sequence_GNOME_Evolution_Connection_allocbuf (list->_maximum);
-
- connections = e_summary_add_connections (summary);
- for (p = connections; p; 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;
-
- offline_handler = E_SUMMARY_OFFLINE_HANDLER (bonobo_object_from_servant (servant));
- return offline_handler->priv->summary->online;
-}
-
-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->summary);
-}
-
-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 (summary);
-
- 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");
- }
-
- 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;
-
- offline_handler = E_SUMMARY_OFFLINE_HANDLER (bonobo_object_from_servant (servant));
- priv = offline_handler->priv;
-
- priv->listener_interface = CORBA_Object_duplicate (progress_listener, ev);
-
- e_summary_set_online (priv->summary, FALSE, went_offline, offline_handler);
-}
-
-static void
-impl_goOnline (PortableServer_Servant servant,
- CORBA_Environment *ev)
-{
- ESummaryOfflineHandler *offline_handler;
-
- offline_handler = E_SUMMARY_OFFLINE_HANDLER (bonobo_object_from_servant (servant));
- e_summary_set_online (offline_handler->priv->summary, 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);
- }
-
- gtk_object_unref (GTK_OBJECT (priv->summary));
-
- 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_set_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->summary = summary;
- gtk_object_ref (GTK_OBJECT (summary));
-}
-
-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 a8c242afbf..0000000000
--- a/my-evolution/e-summary-offline-handler.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * e-summary-offline-handler.h:
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Authors: 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_set_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 42d96b4b61..0000000000
--- a/my-evolution/e-summary-preferences.c
+++ /dev/null
@@ -1,1421 +0,0 @@
-/*
- * e-summary-preferences.c:
- *
- * Copyright (C) 2001 Ximian, Inc
- *
- * Authors: Iain Holmes <iain@ximian.com>
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "e-summary.h"
-#include "e-summary-preferences.h"
-
-#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-moniker-util.h>
-#include <bonobo-conf/bonobo-config-database.h>
-
-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://news.gnome.org/gnome-news/rdf"));
-
- prefs->rdf_urls = rdfs;
-}
-
-static void
-make_initial_weather_list (ESummaryPrefs *prefs)
-{
- GList *stations;
-
- stations = g_list_prepend (NULL, g_strdup ("EGAA"));
- stations = g_list_prepend (stations, g_strdup ("EGAC"));
- stations = g_list_prepend (stations, g_strdup ("ENBR"));
-
- prefs->stations = stations;
-}
-
-/* Load the prefs off disk */
-
-static char *
-vector_from_str_list (GList *strlist)
-{
- char *vector;
- GString *str;
-
- g_return_val_if_fail (strlist != NULL, NULL);
-
- 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) || vector == NULL) {
- 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) || vector == NULL) {
- 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) || vector == NULL) {
- 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;
-}
-
-void
-e_summary_preferences_init (ESummary *summary)
-{
- ESummaryPrefs *prefs;
-
- g_return_if_fail (summary != NULL);
- g_return_if_fail (IS_E_SUMMARY (summary));
-
- summary->preferences = g_new0 (ESummaryPrefs, 1);
- summary->old_prefs = NULL;
-
- if (e_summary_preferences_restore (summary->preferences) == TRUE) {
- return;
- }
-
- prefs = summary->preferences;
- /* 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;
-}
-
-struct _MailPage {
- GtkWidget *all, *shown;
- GtkWidget *fullpath;
- GtkWidget *add, *remove;
-};
-
-struct _RDFPage {
- GtkWidget *all, *shown;
- GtkWidget *refresh, *limit;
- GtkWidget *add, *remove;
- GtkWidget *new_url;
-
- GList *known;
-};
-
-struct _WeatherPage {
- GtkWidget *all, *shown;
- GtkWidget *refresh, *imperial, *metric;
- GtkWidget *add, *remove;
-
- GtkCTreeNode *selected_node;
-};
-
-struct _CalendarPage {
- GtkWidget *one, *five, *week, *month;
- GtkWidget *all, *today;
-};
-
-typedef struct _PropertyData {
- ESummary *summary;
- GnomePropertyBox *box;
- 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;
-};
-
-static struct _RDFInfo rdfs[] = {
- {"http://advogato.org/rss/articles.xml", "Advogato"},
- {"http://www.appwatch.com/appwatch.rdf", "Appwatch"},
- {"http://barrapunto.com/barrapunto.rdf", "Barrapunto"},
- {"http://barrapunto.com/gnome.rdf", "Barrapunto GNOME"},
- {"http://www.bsdtoday.com/backend/bt.rdf", "BSD Today"},
- {"http://beyond2000.com/b2k.rdf", "Beyond 2000"},
- {"http://www.newsisfree.com/export.php3?_f=rss91&_w=f&_i=1443", "CNet"},
- {"http://www.cnn.com/cnn.rss", "CNN"},
- {"http://www.dictionary.com/wordoftheday/wotd.rss", N_("Dictionary.com Word of the Day")},
- {"http://www.dvdreview.com/rss/newschannel.rss", "DVD Review"},
- {"http://freshmeat.net/backend/fm.rdf", "Freshmeat"},
- {"http://news.gnome.org/gnome-news/rdf", "GNotices"},
- {"http://headlines.internet.com/internetnews/prod-news/news.rss", "Internet.com"},
- {"http://dot.kde.org/rdf", "KDE Dot News"},
- {"http://www.kuro5hin.org/backend.rdf", "Kuro5hin"},
- {"http://linuxgames.com/bin/mynetscape.pl", "Linux Games"},
- {"http://linux.com/mrn/jobs/latest_jobs.rss", "Linux Jobs"},
- {"http://www.linuxplanet.com/rss", "Linux Planet"},
- {"http://linuxtoday.com/backend/my-netscape.rdf", "Linux Today"},
- {"http://lwn.net/headlines/rss", "Linux Weekly News"},
- {"http://www.linux.com/mrn/front_page.rss", "Linux.com"},
- {"http://morons.org/morons.rss", "Morons"},
- {"http://www.mozilla.org/news.rdf", "Mozilla"},
- {"http://www.mozillazine.org/contents.rdf", "Mozillazine"},
- {"http://www.fool.com/about/headlines/rss_headlines.asp", "The Motley Fool"},
- {"http://www.newsforge.com/newsforge.rss", "Newsforge"},
- {"http://www.nanotechnews.com/nano/rdf", "Nanotech News"},
- {"http://www.perl.com/pace/news.rss", "Perl.com"},
- {"http://www.pigdog.org/pigdog.rdf", "Pigdog"},
- {"http://www.python.org/channews.rdf", "Python.org"},
- {"http://www.quotationspage.com/data/mqotd.rss", N_("Quotes of the Day")},
- {"http://www.salon.com/feed/RDF/salon_use.rdf", "Salon"},
- {"http://www.scriptingnews.userland.com/xml/scriptingnews2.xml", "Scripting News"},
- {"http://www.securityfocus.com/topnews-rss.html", "Security Focus"},
- {"http://www.segfault.org/stories.xml", "Segfault"},
- {"http://www.slashdot.org/slashdot.rdf", "Slashdot"},
- {"http://www.theregister.co.uk/tonys/slashdot.rdf", "The Register"},
- {"http://www.thinkgeek.com/thinkgeek.rdf", "Think Geek"},
- {"http://www.tomalak.org/recentTodaysLinks.xml", "Tomalak's Realm"},
- {"http://www.webreference.com/webreference.rdf", "Web Reference"},
- {"http://www.zope.org/SiteIndex/news.rss", "Zope"},
- {NULL, NULL}
-};
-
-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 (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/config/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;
- line = g_strconcat (info->url, ",", info->name, "\n", NULL);
- fputs (line, handle);
- }
-
- fclose (handle);
-}
-
-static void
-fill_rdf_all_clist (GtkCList *clist,
- PropertyData *pd)
-{
- FILE *handle;
- int i;
- char *rdf_file, line[4096];
-
- rdf_file = gnome_util_prepend_user_home ("evolution/config/RDF-urls.txt");
- handle = fopen (rdf_file, "r");
- g_free (rdf_file);
-
- if (handle == NULL) {
- for (i = 0; rdfs[i].url; i++) {
- char *text[1];
- int row;
-
- text[0] = _(rdfs[i].name);
- row = gtk_clist_append (clist, text);
- /* We don't need to free this data as it's
- static */
- gtk_clist_set_row_data (clist, row, &rdfs[i]);
- pd->rdf->known = g_list_append (pd->rdf->known, &rdfs[i]);
- }
-
- return;
- }
-
- while (fgets (line, 4095, handle)) {
- char *text[1];
- char **tokens;
- struct _RDFInfo *info;
- int row;
-
- if (line[strlen (line) - 1] == '\n') {
- line[strlen (line) - 1] = 0;
- }
-
- tokens = g_strsplit (line, ",", 2);
- if (tokens == NULL) {
- continue;
- }
-
- info = g_new (struct _RDFInfo, 1);
- info->url = g_strdup (tokens[0]);
- info->name = g_strdup (tokens[1]);
-
- pd->rdf->known = g_list_append (pd->rdf->known, info);
- text[0] = tokens[1];
- row = gtk_clist_append (clist, text);
- gtk_clist_set_row_data_full (clist, row, info,
- (GtkDestroyNotify) free_rdf_info);
- g_strfreev (tokens);
- }
-}
-
-static void
-fill_rdf_shown_clist (GtkCList *clist,
- PropertyData *pd)
-{
- GList *p;
-
- for (p = pd->summary->preferences->rdf_urls; p; p = p->next) {
- char *text[1];
- int row;
-
- text[0] = (char *) find_name_for_url (pd, p->data);
- row = gtk_clist_append (clist, text);
- gtk_clist_set_row_data (clist, row, p);
- }
-}
-
-static void
-fill_weather_all_ctree (GtkCTree *ctree)
-{
- e_summary_weather_ctree_fill (ctree);
-}
-
-static void
-fill_weather_shown_clist (GtkCList *clist,
- PropertyData *pd)
-{
- GList *p;
-
- for (p = pd->summary->preferences->stations; p; p = p->next) {
- char *text[1];
- char *pretty;
-
- pretty = (char *) e_summary_weather_code_to_name (p->data);
-
- text[0] = pretty;
- gtk_clist_append (clist, text);
- }
-}
-
-static void
-fill_mail_all_clist (GtkCList *clist,
- PropertyData *pd)
-{
- e_summary_mail_fill_list (clist, pd->summary);
-}
-
-static void
-fill_mail_shown_clist (GtkCList *clist,
- PropertyData *pd)
-{
- GList *p;
-
- for (p = pd->summary->preferences->display_folders; p; p = p->next) {
- char *text[1];
- char *name, *uri;
- int row;
-
- uri = g_strconcat ("file://", p->data, NULL);
- name = e_summary_mail_uri_to_name (pd->summary, uri);
- g_free (uri);
- if (name == NULL) {
- text[0] = p->data;
- } else {
- text[0] = name + 1;
- }
- row = gtk_clist_append (clist, text);
- gtk_clist_set_row_data (clist, row, p);
- }
-}
-
-static void
-mail_all_select_row_cb (GtkCList *clist,
- int row,
- int column,
- GdkEvent *event,
- PropertyData *pd)
-{
- gtk_widget_set_sensitive (pd->mail->add, TRUE);
-}
-
-static void
-mail_all_unselect_row_cb (GtkCList *clist,
- int row,
- int column,
- GdkEvent *event,
- PropertyData *pd)
-{
- if (clist->selection == NULL) {
- gtk_widget_set_sensitive (pd->mail->add, FALSE);
- }
-}
-
-static void
-mail_shown_select_row_cb (GtkCList *clist,
- int row,
- int column,
- GdkEvent *event,
- PropertyData *pd)
-{
- gtk_widget_set_sensitive (pd->mail->remove, TRUE);
-}
-
-static void
-mail_shown_unselect_row_cb (GtkCList *clist,
- int row,
- int column,
- GdkEvent *event,
- PropertyData *pd)
-{
- if (clist->selection == NULL) {
- gtk_widget_set_sensitive (pd->mail->remove, FALSE);
- }
-}
-
-static void
-mail_add_clicked_cb (GtkButton *button,
- PropertyData *pd)
-{
- int row;
- ESummaryMailRowData *rd;
- char *text[1];
-
- row = GPOINTER_TO_INT (GTK_CLIST (pd->mail->all)->selection->data);
- rd = gtk_clist_get_row_data (GTK_CLIST (pd->mail->all), row);
- g_return_if_fail (rd != NULL);
-
- text[0] = rd->name + 1;
- row = gtk_clist_append (GTK_CLIST (pd->mail->shown), text);
- pd->summary->preferences->display_folders = g_list_prepend (pd->summary->preferences->display_folders,
- g_strdup (rd->uri + 7));
- gtk_clist_set_row_data (GTK_CLIST (pd->mail->shown), row, pd->summary->preferences->display_folders);
-
- gnome_property_box_changed (pd->box);
-}
-
-static void
-mail_remove_clicked_cb (GtkButton *button,
- PropertyData *pd)
-{
- int row;
- GList *p;
-
- row = GPOINTER_TO_INT (GTK_CLIST (pd->mail->shown)->selection->data);
- p = gtk_clist_get_row_data (GTK_CLIST (pd->mail->shown), row);
-
- gtk_clist_remove (GTK_CLIST (pd->mail->shown), row);
- pd->summary->preferences->display_folders = g_list_remove_link (pd->summary->preferences->display_folders, p);
- g_free (p->data);
- g_list_free (p);
-
- gnome_property_box_changed (pd->box);
-}
-
-static void
-mail_show_full_path_toggled_cb (GtkToggleButton *tb,
- PropertyData *pd)
-{
- pd->summary->preferences->show_full_path = gtk_toggle_button_get_active (tb);
-}
-
-static void
-rdf_all_select_row_cb (GtkCList *clist,
- int row,
- int column,
- GdkEvent *event,
- PropertyData *pd)
-{
- gtk_widget_set_sensitive (pd->rdf->add, TRUE);
-}
-
-static void
-rdf_all_unselect_row_cb (GtkCList *clist,
- int row,
- int column,
- GdkEvent *event,
- PropertyData *pd)
-{
- if (GTK_CLIST (pd->rdf->all)->selection == NULL) {
- gtk_widget_set_sensitive (pd->rdf->add, FALSE);
- }
-}
-
-static void
-rdf_shown_select_row_cb (GtkCList *clist,
- int row,
- int column,
- GdkEvent *event,
- PropertyData *pd)
-{
- gtk_widget_set_sensitive (pd->rdf->remove, TRUE);
-}
-
-static void
-rdf_shown_unselect_row_cb (GtkCList *clist,
- int row,
- int column,
- GdkEvent *event,
- PropertyData *pd)
-{
- if (GTK_CLIST (pd->rdf->shown)->selection == NULL) {
- gtk_widget_set_sensitive (pd->rdf->remove, FALSE);
- }
-}
-
-static void
-rdf_add_clicked_cb (GtkButton *button,
- PropertyData *pd)
-{
- struct _RDFInfo *info;
- GList *p, *rows;
- char *text[1];
- int row;
-
- for (rows = GTK_CLIST (pd->rdf->all)->selection; rows; rows = rows->next) {
- row = GPOINTER_TO_INT (rows->data);
- info = gtk_clist_get_row_data (GTK_CLIST (pd->rdf->all), row);
-
- text[0] = info->name;
-
- for (p = pd->summary->preferences->rdf_urls; p; p = p->next) {
- if (strcmp (p->data, info->url) == 0) {
- /* Found it already */
- return;
- }
- }
-
- pd->summary->preferences->rdf_urls = g_list_prepend (pd->summary->preferences->rdf_urls, g_strdup (info->url));
- row = gtk_clist_prepend (GTK_CLIST (pd->rdf->shown), text);
- gtk_clist_set_row_data (GTK_CLIST (pd->rdf->shown), row,
- pd->summary->preferences->rdf_urls);
- }
- gnome_property_box_changed (pd->box);
-}
-
-static void
-rdf_remove_clicked_cb (GtkButton *button,
- PropertyData *pd)
-{
- GList *p;
- int row;
-
- row = GPOINTER_TO_INT (GTK_CLIST (pd->rdf->shown)->selection->data);
- p = gtk_clist_get_row_data (GTK_CLIST (pd->rdf->shown), row);
- gtk_clist_remove (GTK_CLIST (pd->rdf->shown), row);
-
- pd->summary->preferences->rdf_urls = g_list_remove_link (pd->summary->preferences->rdf_urls, p);
- g_free (p->data);
- g_list_free (p);
-
- gnome_property_box_changed (pd->box);
-}
-
-static void
-add_dialog_clicked_cb (GnomeDialog *dialog,
- int button,
- PropertyData *pd)
-{
- struct _RDFInfo *info;
- char *url, *name;
- char *text[1];
- int row;
-
- if (button == 1) {
- gnome_dialog_close (dialog);
- return;
- }
-
- url = gtk_entry_get_text (GTK_ENTRY (pd->new_url_entry));
- if (url == NULL || *text == 0) {
- gnome_dialog_close (dialog);
- return;
- }
- name = gtk_entry_get_text (GTK_ENTRY (pd->new_name_entry));
- info = g_new (struct _RDFInfo, 1);
- info->url = g_strdup (url);
- info->name = name ? g_strdup (name) : g_strdup (url);
-
- text[0] = info->name;
- row = gtk_clist_append (GTK_CLIST (pd->rdf->all), text);
- gtk_clist_set_row_data_full (GTK_CLIST (pd->rdf->all), row, info,
- (GdkDestroyNotify) free_rdf_info);
- pd->rdf->known = g_list_append (pd->rdf->known, info);
-
- save_known_rdfs (pd->rdf->known);
- pd->summary->preferences->rdf_urls = g_list_prepend (pd->summary->preferences->rdf_urls, g_strdup (info->url));
- row = gtk_clist_prepend (GTK_CLIST (pd->rdf->shown), text);
- gtk_clist_set_row_data (GTK_CLIST (pd->rdf->shown), row,
- pd->summary->preferences->rdf_urls);
-
-
- gnome_dialog_close (dialog);
-}
-
-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);
-}
-
-static void
-rdf_refresh_value_changed_cb (GtkAdjustment *adj,
- PropertyData *pd)
-{
- pd->summary->preferences->rdf_refresh_time = (int) adj->value;
- gnome_property_box_changed (pd->box);
-}
-
-static void
-rdf_limit_value_changed_cb (GtkAdjustment *adj,
- PropertyData *pd)
-{
- pd->summary->preferences->limit = (int) adj->value;
- gnome_property_box_changed (pd->box);
-}
-
-static void
-weather_all_select_row_cb (GtkCTree *ctree,
- GtkCTreeNode *row,
- int column,
- PropertyData *pd)
-{
- gtk_widget_set_sensitive (pd->weather->add, TRUE);
- pd->weather->selected_node = row;
-}
-
-static void
-weather_all_unselect_row_cb (GtkCList *clist,
- GtkCTreeNode *row,
- int column,
- PropertyData *pd)
-{
- if (clist->selection == NULL) {
- gtk_widget_set_sensitive (pd->weather->add, FALSE);
- }
- pd->weather->selected_node = NULL;
-}
-
-static void
-weather_shown_select_row_cb (GtkCList *clist,
- int row,
- int column,
- GdkEvent *event,
- PropertyData *pd)
-{
- gtk_widget_set_sensitive (pd->weather->remove, TRUE);
-}
-
-static void
-weather_shown_unselect_row_cb (GtkCList *clist,
- int row,
- int column,
- GdkEvent *event,
- PropertyData *pd)
-{
- if (clist->selection == NULL) {
- gtk_widget_set_sensitive (pd->weather->remove, FALSE);
- }
-}
-
-static void
-weather_add_clicked_cb (GtkButton *button,
- PropertyData *pd)
-{
- ESummaryWeatherLocation *location;
- GList *p;
- char *text[1];
-
- location = gtk_ctree_node_get_row_data (GTK_CTREE (pd->weather->all), pd->weather->selected_node);
-
- for (p = pd->summary->preferences->stations; p; p = p->next) {
- if (strcmp (location->code, p->data) == 0) {
- return; /* Already have it */
- }
- }
-
- pd->summary->preferences->stations = g_list_prepend (pd->summary->preferences->stations, g_strdup (location->code));
- text[0] = location->name;
- gtk_clist_prepend (GTK_CLIST (pd->weather->shown), text);
-
- gnome_property_box_changed (pd->box);
-}
-
-static void
-weather_remove_clicked_cb (GtkButton *button,
- PropertyData *pd)
-{
- int row;
- GList *p;
-
- row = GPOINTER_TO_INT (GTK_CLIST (pd->weather->shown)->selection->data);
- p = g_list_nth (pd->summary->preferences->stations, row);
- gtk_clist_remove (GTK_CLIST (pd->weather->shown), row);
-
- pd->summary->preferences->stations = g_list_remove_link (pd->summary->preferences->stations, p);
- g_free (p->data);
- g_list_free (p);
-
- gnome_property_box_changed (pd->box);
-}
-
-static void
-weather_refresh_value_changed_cb (GtkAdjustment *adj,
- PropertyData *pd)
-{
- pd->summary->preferences->weather_refresh_time = (int) adj->value;
- gnome_property_box_changed (pd->box);
-}
-
-static void
-weather_metric_toggled_cb (GtkToggleButton *tb,
- PropertyData *pd)
-{
- if (gtk_toggle_button_get_active (tb) == FALSE) {
- return;
- }
-
- pd->summary->preferences->units = UNITS_METRIC;
- gnome_property_box_changed (pd->box);
-}
-
-static void
-weather_imperial_toggled_cb (GtkToggleButton *tb,
- PropertyData *pd)
-{
- if (gtk_toggle_button_get_active (tb) == FALSE) {
- return;
- }
-
- pd->summary->preferences->units = UNITS_IMPERIAL;
- gnome_property_box_changed (pd->box);
-}
-
-
-static void
-calendar_one_toggled_cb (GtkToggleButton *tb,
- PropertyData *pd)
-{
- if (gtk_toggle_button_get_active (tb) == FALSE) {
- return;
- }
-
- pd->summary->preferences->days = E_SUMMARY_CALENDAR_ONE_DAY;
- gnome_property_box_changed (pd->box);
-}
-
-static void
-calendar_five_toggled_cb (GtkToggleButton *tb,
- PropertyData *pd)
-{
- if (gtk_toggle_button_get_active (tb) == FALSE) {
- return;
- }
-
- pd->summary->preferences->days = E_SUMMARY_CALENDAR_FIVE_DAYS;
- gnome_property_box_changed (pd->box);
-}
-
-static void
-calendar_week_toggled_cb (GtkToggleButton *tb,
- PropertyData *pd)
-{
- if (gtk_toggle_button_get_active (tb) == FALSE) {
- return;
- }
-
- pd->summary->preferences->days = E_SUMMARY_CALENDAR_ONE_WEEK;
- gnome_property_box_changed (pd->box);
-}
-
-static void
-calendar_month_toggled_cb (GtkToggleButton *tb,
- PropertyData *pd)
-{
- if (gtk_toggle_button_get_active (tb) == FALSE) {
- return;
- }
-
- pd->summary->preferences->days = E_SUMMARY_CALENDAR_ONE_MONTH;
- gnome_property_box_changed (pd->box);
-}
-
-static void
-calendar_all_toggled_cb (GtkToggleButton *tb,
- PropertyData *pd)
-{
- if (gtk_toggle_button_get_active (tb) == FALSE) {
- return;
- }
-
- pd->summary->preferences->show_tasks = E_SUMMARY_CALENDAR_ALL_TASKS;
- gnome_property_box_changed (pd->box);
-}
-
-static void
-calendar_today_toggled_cb (GtkToggleButton *tb,
- PropertyData *pd)
-{
- if (gtk_toggle_button_get_active (tb) == FALSE) {
- return;
- }
-
- pd->summary->preferences->show_tasks = E_SUMMARY_CALENDAR_TODAYS_TASKS;
- gnome_property_box_changed (pd->box);
-}
-
-static void
-construct_pixmap_button (GtkButton *button,
- const char *text,
- const char *image)
-{
- GtkWidget *label, *box, *pixmap;
-
- g_return_if_fail (button != NULL);
-
- box = gtk_hbox_new (FALSE, 0);
- label = gtk_label_new (text);
- gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 0);
-
- pixmap = gnome_stock_pixmap_widget (NULL, image);
- gtk_box_pack_start (GTK_BOX (box), pixmap, TRUE, TRUE, 0);
-
- gtk_container_add (GTK_CONTAINER (button), box);
- gtk_widget_show_all (box);
-}
-
-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);
-
- /* I think this should be a fancy bonobo thingy */
- mail->all = glade_xml_get_widget (pd->xml, "clist7");
- g_return_val_if_fail (mail->all != NULL, FALSE);
- fill_mail_all_clist (GTK_CLIST (mail->all), pd);
- gtk_signal_connect (GTK_OBJECT (mail->all), "select-row",
- GTK_SIGNAL_FUNC (mail_all_select_row_cb), pd);
- gtk_signal_connect (GTK_OBJECT (mail->all), "unselect-row",
- GTK_SIGNAL_FUNC (mail_all_unselect_row_cb), pd);
-
- mail->shown = glade_xml_get_widget (pd->xml, "clist1");
- g_return_val_if_fail (mail->shown != NULL, FALSE);
- fill_mail_shown_clist (GTK_CLIST (mail->shown), pd);
- gtk_signal_connect (GTK_OBJECT (mail->shown), "select-row",
- GTK_SIGNAL_FUNC (mail_shown_select_row_cb), pd);
- gtk_signal_connect (GTK_OBJECT (mail->shown), "unselect-row",
- GTK_SIGNAL_FUNC (mail_shown_unselect_row_cb), pd);
-
- 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),
- pd->summary->preferences->show_full_path);
- gtk_signal_connect (GTK_OBJECT (mail->fullpath), "toggled",
- GTK_SIGNAL_FUNC (mail_show_full_path_toggled_cb), pd);
-
- mail->add = glade_xml_get_widget (pd->xml, "button4");
- g_return_val_if_fail (mail->add != NULL, FALSE);
- construct_pixmap_button (GTK_BUTTON (mail->add), _("Add"),
- GNOME_STOCK_BUTTON_NEXT);
- gtk_signal_connect (GTK_OBJECT (mail->add), "clicked",
- GTK_SIGNAL_FUNC (mail_add_clicked_cb), pd);
-
- mail->remove = glade_xml_get_widget (pd->xml, "button5");
- g_return_val_if_fail (mail->remove != NULL, FALSE);
- construct_pixmap_button (GTK_BUTTON (mail->remove), _("Remove"),
- GNOME_STOCK_BUTTON_PREV);
- gtk_signal_connect (GTK_OBJECT (mail->remove), "clicked",
- GTK_SIGNAL_FUNC (mail_remove_clicked_cb), pd);
-
- /* RDF */
- rdf = pd->rdf = g_new (struct _RDFPage, 1);
- rdf->known = NULL;
- rdf->all = glade_xml_get_widget (pd->xml, "clist6");
- g_return_val_if_fail (rdf->all != NULL, FALSE);
- gtk_signal_connect (GTK_OBJECT (rdf->all), "select-row",
- GTK_SIGNAL_FUNC (rdf_all_select_row_cb), pd);
- gtk_signal_connect (GTK_OBJECT (rdf->all), "unselect-row",
- GTK_SIGNAL_FUNC (rdf_all_unselect_row_cb), pd);
- fill_rdf_all_clist (GTK_CLIST (rdf->all), pd);
-
- rdf->shown = glade_xml_get_widget (pd->xml, "clist5");
- g_return_val_if_fail (rdf->shown != NULL, FALSE);
- gtk_signal_connect (GTK_OBJECT (rdf->shown), "select-row",
- GTK_SIGNAL_FUNC (rdf_shown_select_row_cb), pd);
- gtk_signal_connect (GTK_OBJECT (rdf->shown), "unselect-row",
- GTK_SIGNAL_FUNC (rdf_shown_unselect_row_cb), pd);
- fill_rdf_shown_clist (GTK_CLIST (rdf->shown), 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) pd->summary->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) pd->summary->preferences->limit);
- gtk_signal_connect (GTK_OBJECT (GTK_SPIN_BUTTON (rdf->limit)->adjustment), "value_changed",
- GTK_SIGNAL_FUNC (rdf_limit_value_changed_cb), pd);
-
- rdf->add = glade_xml_get_widget (pd->xml, "button9");
- g_return_val_if_fail (rdf->add != NULL, FALSE);
-
- construct_pixmap_button (GTK_BUTTON (rdf->add), _("Add"),
- GNOME_STOCK_BUTTON_NEXT);
- gtk_widget_set_sensitive (rdf->add, FALSE);
- gtk_signal_connect (GTK_OBJECT (rdf->add), "clicked",
- GTK_SIGNAL_FUNC (rdf_add_clicked_cb), pd);
-
- rdf->remove = glade_xml_get_widget (pd->xml, "button10");
- g_return_val_if_fail (rdf->remove != NULL, FALSE);
-
- construct_pixmap_button (GTK_BUTTON (rdf->remove), _("Remove"),
- GNOME_STOCK_BUTTON_PREV);
- gtk_widget_set_sensitive (rdf->remove, FALSE);
- gtk_signal_connect (GTK_OBJECT (rdf->remove), "clicked",
- GTK_SIGNAL_FUNC (rdf_remove_clicked_cb), pd);
-
- rdf->new_url = glade_xml_get_widget (pd->xml, "button11");
- g_return_val_if_fail (rdf->new_url != NULL, FALSE);
- gtk_signal_connect (GTK_OBJECT (rdf->new_url), "clicked",
- GTK_SIGNAL_FUNC (rdf_new_url_clicked_cb), pd);
-
- /* Weather */
- weather = pd->weather = g_new (struct _WeatherPage, 1);
- weather->all = glade_xml_get_widget (pd->xml, "ctree1");
- g_return_val_if_fail (weather->all != NULL, FALSE);
- fill_weather_all_ctree (GTK_CTREE (weather->all));
- gtk_signal_connect (GTK_OBJECT (weather->all), "tree-select-row",
- GTK_SIGNAL_FUNC (weather_all_select_row_cb), pd);
- gtk_signal_connect (GTK_OBJECT (weather->all), "tree-unselect-row",
- GTK_SIGNAL_FUNC (weather_all_unselect_row_cb), pd);
-
- weather->shown = glade_xml_get_widget (pd->xml, "clist3");
- g_return_val_if_fail (weather->shown != NULL, FALSE);
- fill_weather_shown_clist (GTK_CLIST (weather->shown), pd);
- gtk_signal_connect (GTK_OBJECT (weather->shown), "select-row",
- GTK_SIGNAL_FUNC (weather_shown_select_row_cb), pd);
- gtk_signal_connect (GTK_OBJECT (weather->shown), "unselect-row",
- GTK_SIGNAL_FUNC (weather_shown_unselect_row_cb), 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) pd->summary->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), (pd->summary->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), (pd->summary->preferences->units == UNITS_IMPERIAL));
- gtk_signal_connect (GTK_OBJECT (weather->imperial), "toggled",
- GTK_SIGNAL_FUNC (weather_imperial_toggled_cb), pd);
-
- weather->add = glade_xml_get_widget (pd->xml, "button6");
- g_return_val_if_fail (weather->add != NULL, FALSE);
-
- construct_pixmap_button (GTK_BUTTON (weather->add), _("Add"),
- GNOME_STOCK_BUTTON_NEXT);
- gtk_signal_connect (GTK_OBJECT (weather->add), "clicked",
- GTK_SIGNAL_FUNC (weather_add_clicked_cb), pd);
-
- weather->remove = glade_xml_get_widget (pd->xml, "button7");
- g_return_val_if_fail (weather->remove != NULL, FALSE);
-
- construct_pixmap_button (GTK_BUTTON (weather->remove), _("Remove"),
- GNOME_STOCK_BUTTON_PREV);
- gtk_signal_connect (GTK_OBJECT (weather->remove), "clicked",
- GTK_SIGNAL_FUNC (weather_remove_clicked_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),
- (pd->summary->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),
- (pd->summary->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),
- (pd->summary->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),
- (pd->summary->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),
- (pd->summary->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),
- (pd->summary->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);
- g_free (pd->rdf);
- }
- if (pd->mail) {
- g_free (pd->mail);
- }
- if (pd->weather) {
- g_free (pd->weather);
- }
- if (pd->calendar) {
- g_free (pd->calendar);
- }
-
- if (pd->xml) {
- gtk_object_unref (GTK_OBJECT (pd->xml));
- }
- if (pd->summary) {
- gtk_object_unref (GTK_OBJECT (pd->summary));
- }
-
- g_free (pd);
-}
-
-static void
-property_box_clicked_cb (GnomeDialog *dialog,
- int page_num,
- PropertyData *pd)
-{
- if (page_num == -1) {
- e_summary_reconfigure (pd->summary);
- }
-}
-
-static void
-property_box_destroy_cb (GtkObject *object,
- PropertyData *pd)
-{
- if (pd->summary->old_prefs != NULL) {
- e_summary_preferences_free (pd->summary->old_prefs);
- pd->summary->old_prefs = NULL;
- }
-
- e_summary_preferences_save (pd->summary->preferences);
- free_property_dialog (pd);
-}
-
-void
-e_summary_configure (GtkWidget *widget,
- ESummary *summary)
-{
- PropertyData *pd;
-
- if (summary->prefs_window != NULL) {
- gdk_window_raise (summary->prefs_window->window);
- gdk_window_show (summary->prefs_window->window);
- return;
- }
-
- pd = g_new0 (PropertyData, 1);
-
- gtk_object_ref (GTK_OBJECT (summary));
- pd->summary = summary;
-
- if (summary->old_prefs != NULL) {
- e_summary_preferences_free (summary->old_prefs);
- }
-
- summary->old_prefs = e_summary_preferences_copy (summary->preferences);
-
- pd->xml = glade_xml_new (EVOLUTION_GLADEDIR "/my-evolution.glade", NULL);
- g_return_if_fail (pd->xml != NULL);
-
- pd->box = GNOME_PROPERTY_BOX (glade_xml_get_widget (pd->xml, "dialog1"));
- gtk_window_set_title (GTK_WINDOW (pd->box), _("My Evolution Settings"));
- if (make_property_dialog (pd) == FALSE) {
- g_warning ("Missing some part of XML file");
- free_property_dialog (pd);
- return;
- }
-
- gtk_signal_connect (GTK_OBJECT (pd->box), "apply",
- GTK_SIGNAL_FUNC (property_box_clicked_cb), pd);
- gtk_signal_connect (GTK_OBJECT (pd->box), "destroy",
- GTK_SIGNAL_FUNC (property_box_destroy_cb), pd);
- gtk_widget_show (GTK_WIDGET (pd->box));
-}
-
diff --git a/my-evolution/e-summary-preferences.h b/my-evolution/e-summary-preferences.h
deleted file mode 100644
index b271e0c55c..0000000000
--- a/my-evolution/e-summary-preferences.h
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- * e-summary-preferences.h
- *
- * Copyright (C) 2001 Ximian, Inc
- *
- * Authors: Iain Holmes <iain@ximian.com>
- */
-
-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);
-void e_summary_configure (GtkWidget *widget,
- ESummary *summary);
-void e_summary_preferences_init (ESummary *summary);
diff --git a/my-evolution/e-summary-rdf.c b/my-evolution/e-summary-rdf.c
deleted file mode 100644
index a19cf061b1..0000000000
--- a/my-evolution/e-summary-rdf.c
+++ /dev/null
@@ -1,660 +0,0 @@
-/*
- * e-summary-rdf.c: RDF summary bit.
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Authors: Iain Holmes <iain@ximian.com>
- *
- * Based on code by Alan Cox
- */
-#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 <libgnomevfs/gnome-vfs.h>
-#include "e-summary.h"
-
-struct _ESummaryRDF {
- ESummaryConnection *connection;
- GList *rdfs;
-
- char *html;
- guint32 timeout;
- gboolean online;
-};
-
-typedef struct _RDF {
- char *uri;
- char *html;
- GnomeVFSAsyncHandle *handle;
- GString *string;
- char *buffer;
-
- xmlDocPtr cache;
- ESummary *summary;
-
- gboolean shown;
-} 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 (memcmp (r, "&amp;", 5) == 0) {
- *w++ = '&';
- r += 5;
- continue;
- }
- if (memcmp (r, "&lt;", 4) == 0) {
- *w++ = '<';
- r += 4;
- continue;
- }
- if (memcmp (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') {
- char *full;
-
- full = g_strdup_printf ("<a href=\"%s\">", u);
- g_string_append (html, full);
- }
- 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);
-
- 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\"><b>");
-
- if (r->cache == NULL) {
- char *tmp_utf;
-
- tmp_utf = e_utf8_from_locale_string (_("There was an error downloading news feed"));
- g_string_append (html, tmp_utf);
- g_string_append (html, "</b></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
-close_callback (GnomeVFSAsyncHandle *handle,
- GnomeVFSResult result,
- RDF *r)
-{
- ESummary *summary;
- char *xml;
- xmlDocPtr doc;
-
- summary = r->summary;
- if (summary->rdf->connection->callback) {
- ESummaryConnection *connection = summary->rdf->connection;
- connection->callback (summary, connection->callback_closure);
- }
-
- if (r->handle == NULL) {
- g_free (r->buffer);
- r->buffer = NULL;
- g_string_free (r->string, TRUE);
- r->string = NULL;
- return;
- }
-
- r->handle = NULL;
- g_free (r->buffer);
- r->buffer = NULL;
- xml = r->string->str;
- g_string_free (r->string, FALSE);
- r->string = NULL;
-
- if (r->cache != NULL) {
- xmlFreeDoc (r->cache);
- r->cache = NULL;
- }
-
- doc = xmlParseMemory (xml, strlen (xml));
-#if 0
- if (doc == NULL) {
- if (r->html != NULL) {
- g_free (r->html);
- }
- r->html = g_strdup ("<b>Error parsing XML</b>");
-
- e_summary_draw (r->summary);
- g_free (xml);
- return;
- }
-#endif
- g_free (xml);
- r->cache = doc;
-
- /* Draw it */
- display_doc (r);
-}
-
-static void
-read_callback (GnomeVFSAsyncHandle *handle,
- GnomeVFSResult result,
- gpointer buffer,
- GnomeVFSFileSize bytes_requested,
- GnomeVFSFileSize bytes_read,
- RDF *r)
-{
- if (result != GNOME_VFS_OK && result != GNOME_VFS_ERROR_EOF) {
- if (r->html) {
- g_free (r->html);
- }
- r->html = e_utf8_from_locale_string (_("<b>Error downloading RDF</b>"));
-
- e_summary_draw (r->summary);
- r->handle = NULL;
- gnome_vfs_async_close (handle,
- (GnomeVFSAsyncCloseCallback) close_callback, r);
- return;
- }
-
- if (bytes_read == 0) {
- gnome_vfs_async_close (handle,
- (GnomeVFSAsyncCloseCallback) close_callback, r);
- } else {
- *((char *) buffer + bytes_read) = 0;
- g_string_append (r->string, (const char *) buffer);
- gnome_vfs_async_read (handle, buffer, 4095,
- (GnomeVFSAsyncReadCallback) read_callback, r);
- }
-}
-
-static void
-open_callback (GnomeVFSAsyncHandle *handle,
- GnomeVFSResult result,
- RDF *r)
-{
- if (result != GNOME_VFS_OK) {
- r->html = e_utf8_from_locale_string (_("<b>Error downloading RDF</b>"));
-
- display_doc (r);
- return;
- }
-
- r->string = g_string_new ("");
- r->buffer = g_new (char, 4096);
-
- gnome_vfs_async_read (handle, r->buffer, 4095,
- (GnomeVFSAsyncReadCallback) read_callback, r);
-}
-
-static gboolean
-e_summary_rdf_update (ESummary *summary)
-{
- GList *r;
-
- for (r = summary->rdf->rdfs; r; r = r->next) {
- RDF *rdf = r->data;
-
- gnome_vfs_async_open (&rdf->handle, rdf->uri,
- GNOME_VFS_OPEN_READ,
- (GnomeVFSAsyncOpenCallback) open_callback, 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_prepend (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->handle != 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 ("RDF Summary");
-
- 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->handle != NULL) {
- ESummaryConnectionData *d;
-
- d = make_connection (r);
- connections = g_list_prepend (connections, d);
- }
- }
-
- return connections;
-}
-
-static void
-e_summary_rdf_set_online (ESummary *summary,
- gboolean online,
- void *data)
-{
- ESummaryRDF *rdf;
-
- 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 {
- 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;
- 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://news.gnome.org/gnome-news/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;
-}
-
-static void
-rdf_free (RDF *r)
-{
- /* Stop the download */
- if (r->handle) {
- gnome_vfs_async_cancel (r->handle);
- }
- if (r->uri) {
- g_free (r->uri);
- }
- if (r->html) {
- g_free (r->html);
- }
- if (r->string) {
- g_string_free (r->string, TRUE);
- }
- if (r->buffer) {
- g_free (r->buffer);
- }
- if (r->cache) {
- xmlFreeDoc (r->cache);
- }
- g_free (r);
-}
-
-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);
-
- for (old = rdf->rdfs; old; old = old->next) {
- RDF *r;
-
- r = old->data;
- rdf_free (r);
- }
- g_list_free (rdf->rdfs);
- rdf->rdfs = NULL;
-
- 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 aae99b383e..0000000000
--- a/my-evolution/e-summary-rdf.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * e-summary-rdf.h:
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Authors: Iain Holmes <iain@ximian.com>
- */
-
-#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);
-
-#endif
diff --git a/my-evolution/e-summary-tasks.c b/my-evolution/e-summary-tasks.c
deleted file mode 100644
index d691b58e1e..0000000000
--- a/my-evolution/e-summary-tasks.c
+++ /dev/null
@@ -1,354 +0,0 @@
-/*
- * e-summary-tasks.c:
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Authors: 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-tasks.h"
-#include "e-summary.h"
-#include <cal-client/cal-client.h>
-#include <cal-util/timeutil.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;
- CalComponentDateTime start_a, start_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_dtstart (comp_a, &start_a);
- cal_component_get_dtstart (comp_b, &start_b);
-
- return icaltime_compare (*start_a.value, *start_b.value);
-}
-
-static GList *
-get_todays_uids (CalClient *client,
- GList *uids)
-{
- GList *today = NULL, *p;
- time_t todays_end, todays_start;
-
- todays_start = time_day_begin (time (NULL));
- todays_end = time_day_end (time (NULL));
-
- for (p = uids; p; p = p->next) {
- char *uid;
- CalComponent *comp;
- CalClientGetStatus status;
- CalComponentDateTime end;
- time_t endt;
-
- uid = p->data;
- status = cal_client_get_object (client, uid, &comp);
- if (status != CAL_CLIENT_GET_SUCCESS) {
- continue;
- }
-
- cal_component_get_dtend (comp, &end);
- if (end.value != 0) {
- endt = icaltime_as_timet (*end.value);
-
- if (endt >= todays_start && endt <= todays_end) {
- today = g_list_append (today, g_strdup (uid));
- }
- }
- }
-
- 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, day_begin, day_end;
-
- t = time (NULL);
- day_begin = time_day_begin (t);
- day_end = time_day_end (t);
-
- 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 (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;
-
- 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=\"es-appointments.png\" "
- "alt=\"\" width=\"16\" height=\"16\"> &#160; "
- "<font size=\"-1\"><a href=\"evolution:/local/Tasks\">%s</a></font><br>",
- text.value);
- } else {
- tmp = g_strdup_printf ("<img align=\"middle\" src=\"es-appointments.png\" "
- "alt=\"\" width=\"16\" height=\"16\"> &#160; "
- "<font size=\"-1\"><strike><a href=\"evolution:/local/Tasks\">%s</a></strike></font><br>",
- text.value);
- }
-
- 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)
-{
-
-}
-
-void
-e_summary_tasks_init (ESummary *summary)
-{
- ESummaryTasks *tasks;
- gboolean result;
- char *uri;
-
- 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);
-
- uri = gnome_util_prepend_user_home ("evolution/local/Tasks/tasks.ics");
- result = cal_client_open_calendar (tasks->client, uri, FALSE);
- g_free (uri);
- 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 fbf0ae4f32..0000000000
--- a/my-evolution/e-summary-tasks.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * e-summary-tasks.h
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Authors: Iain Holmes <iain@ximian.com>
- */
-
-#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 1ebc8ea63a..0000000000
--- a/my-evolution/e-summary-type.h
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- * e-summary-type.h:
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Authors: Iain Holmes <iain@ximian.com>
- */
-
-#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 b64408b76b..0000000000
--- a/my-evolution/e-summary-weather.c
+++ /dev/null
@@ -1,788 +0,0 @@
-/*
- * e-summary-weather.c
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Authors: Iain Holmes <iain@ximian.com>
- */
-
-#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 <libgnomevfs/gnome-vfs.h>
-#include "e-summary.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 *name,
- const char *code)
-{
- return g_strdup_printf ("<a href=\"http://weather.noaa.gov/cgi-bin/mgetmetar.pl?cccc=%s\">%s</a>", code, name);
-}
-
-static void
-weather_make_html (Weather *w)
-{
- GString *string;
- ESummaryWeatherLocation *location;
- char *sky, *temp, *cond, *uri, *url, *s;
- char *icon_name;
-
- icon_name = icon_from_weather (w);
- string = g_string_new ("");
- g_string_sprintf (string, "<dd><img align=\"middle\" "
- "src=\"%s\">&#160;<b>", icon_name);
- location = g_hash_table_lookup (locations_hash, w->location);
- if (location == NULL) {
- url = make_url (w->location, w->location);
- } else {
- url = make_url (location->name, w->location);
- }
-
- g_string_append (string, url);
- g_free (url);
-
- 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
-close_callback (GnomeVFSAsyncHandle *handle,
- GnomeVFSResult result,
- Weather *w)
-{
- 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 (w->handle == NULL) {
- g_free (w->buffer);
- w->buffer = NULL;
- g_string_free (w->string, TRUE);
- w->string = NULL;
- return;
- }
-
- w->handle = NULL;
- g_free (w->buffer);
- w->buffer = NULL;
- html = w->string->str;
- g_string_free (w->string, FALSE);
- w->string = 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);
- g_free (html);
- return;
- }
-
- metar++;
- end = strchr (metar, '\n');
- if (end == NULL) {
- g_free (search_str);
- g_free (html);
- return;
- }
- *end = '\0';
-
- parse_metar (metar, w);
- g_free (html);
- g_free (search_str);
- return;
-}
-
-static void
-read_callback (GnomeVFSAsyncHandle *handle,
- GnomeVFSResult result,
- gpointer buffer,
- GnomeVFSFileSize bytes_requested,
- GnomeVFSFileSize bytes_read,
- Weather *w)
-{
- if (result != GNOME_VFS_OK && result != GNOME_VFS_ERROR_EOF) {
- if (w->summary->weather->errorshown == FALSE) {
- w->html = g_strdup ("<dd><b>An error occurred while downloading weather data</b></dd>");
- w->summary->weather->errorshown = TRUE;
- } else {
- w->html = g_strdup ("<dd> </dd>");
- }
-
- e_summary_draw (w->summary);
- w->handle = NULL;
- gnome_vfs_async_close (handle,
- (GnomeVFSAsyncCloseCallback) close_callback, w);
- return;
- }
-
- if (bytes_read == 0) {
- gnome_vfs_async_close (handle,
- (GnomeVFSAsyncCloseCallback) close_callback, w);
- } else {
- *((char *) buffer + bytes_read) = 0;
- g_string_append (w->string, (const char *) buffer);
- gnome_vfs_async_read (handle, buffer, 4095,
- (GnomeVFSAsyncReadCallback) read_callback, w);
- }
-}
-
-static void
-open_callback (GnomeVFSAsyncHandle *handle,
- GnomeVFSResult result,
- Weather *w)
-{
- if (result != GNOME_VFS_OK) {
- if (w->summary->weather->errorshown == FALSE) {
- w->html = e_utf8_from_locale_string (_("<dd><b>The weather server could not be contacted</b></dd>"));
-
- w->summary->weather->errorshown = TRUE;
- } else {
- w->html = g_strdup ("<dd> </dd>");
- }
-
- e_summary_draw (w->summary);
- return;
- }
-
- w->string = g_string_new ("");
- w->buffer = g_new (char, 4096);
-
- gnome_vfs_async_read (handle, w->buffer, 4095,
- (GnomeVFSAsyncReadCallback) read_callback, w);
-}
-
-static void
-e_summary_weather_update (ESummary *summary)
-{
- GList *w;
-
- summary->weather->errorshown = FALSE;
- for (w = summary->weather->weathers; w; w = w->next) {
- char *uri;
- Weather *weather = w->data;
-
- uri = g_strdup_printf ("http://weather.noaa.gov/cgi-bin/mgetmetar.pl?cccc=%s", weather->location);
-
- gnome_vfs_async_open (&weather->handle, uri, GNOME_VFS_OPEN_READ,
- (GnomeVFSAsyncOpenCallback) open_callback, weather);
- g_free (uri);
- }
-}
-
-static void
-weather_free (Weather *w)
-{
- g_return_if_fail (w != NULL);
-
- if (w->handle != NULL) {
- gnome_vfs_async_cancel (w->handle);
- }
- if (w->string) {
- g_string_free (w->string, TRUE);
- }
- if (w->buffer) {
- g_free (w->buffer);
- }
-
- 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_prepend (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);
-
- 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->handle != NULL) {
- count++;
- }
- }
-
- return count;
-}
-
-static ESummaryConnectionData *
-make_connection (Weather *w)
-{
- ESummaryConnectionData *data;
-
- data = g_new (ESummaryConnectionData, 1);
- data->hostname = g_strdup (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->handle != NULL) {
- ESummaryConnectionData *d;
-
- d = make_connection (w);
- connections = g_list_prepend (connections, d);
- }
- }
-
- return connections;
-}
-
-static void
-e_summary_weather_set_online (ESummary *summary,
- gboolean online,
- void *data)
-{
- ESummaryWeather *weather;
-
- 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 {
- 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) {
- e_summary_weather_add_location (summary, "ENBR");
- e_summary_weather_add_location (summary, "EGAC");
- e_summary_weather_add_location (summary, "EGAA");
- 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;
- }
-}
-
-void
-e_summary_weather_ctree_fill (GtkCTree *tree)
-{
- GtkCTreeNode *region, *state, *location, *pref_loc_root;
- char *key, *path;
- int nregions, iregions;
- char **regions, *pp[1];
-
- path = g_strdup (EVOLUTION_DATADIR "/evolution/Locations");
-
- key = g_strdup_printf ("=%s=/", path);
- g_free (path);
-
- gnome_config_push_prefix (key);
- g_free (key);
-
- pp[0] = _("Regions");
- pref_loc_root = gtk_ctree_insert_node (tree, NULL, NULL, pp, 0,
- NULL, NULL, NULL, NULL,
- FALSE, TRUE);
-
- 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);
-
- pp[0] = region_name;
- region = gtk_ctree_insert_node (tree, pref_loc_root,
- region, pp, 0, NULL,
- NULL, NULL, NULL,
- FALSE, FALSE);
-
- 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);
-
- pp[0] = state_name;
- state = gtk_ctree_insert_node (tree, region,
- state, pp, 0,
- NULL, NULL,
- NULL, NULL,
- FALSE, FALSE);
-
- 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;
- ESummaryWeatherLocation *w_location;
-
- gnome_config_make_vector (iter_val,
- &nlocdata,
- &locdata);
- g_return_if_fail (nlocdata == 4);
-
- pp[0] = locdata[0];
- location = gtk_ctree_insert_node (tree, state, location, pp, 0,
- NULL, NULL, NULL, NULL, FALSE, TRUE);
- w_location = g_hash_table_lookup (locations_hash, locdata[1]);
- gtk_ctree_node_set_row_data (tree, location, w_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;
-}
-
-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 5ee1623f6d..0000000000
--- a/my-evolution/e-summary-weather.h
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * e-summary-weather.h
- *
- */
-
-#ifndef __E_SUMMARY_WEATHER_H__
-#define __E_SUMMARY_WEATHER_H__
-
-#include <time.h>
-#include <gtk/gtkctree.h>
-#include "e-summary-type.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_ctree_fill (GtkCTree *tree);
-const char *e_summary_weather_code_to_name (const char *code);
-void e_summary_weather_free (ESummary *summary);
-
-#endif
diff --git a/my-evolution/e-summary.c b/my-evolution/e-summary.c
deleted file mode 100644
index 40518b5eb5..0000000000
--- a/my-evolution/e-summary.c
+++ /dev/null
@@ -1,741 +0,0 @@
-/*
- * e-summary.c: ESummary object.
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Authors: Iain Holmes <iain@ximian.com>
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#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 <libgnomevfs/gnome-vfs.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 <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 "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 GtkObjectClass *e_summary_parent_class;
-
-struct _ESummaryMailFolderInfo {
- char *name;
-
- int count;
- int unread;
-};
-
-typedef struct _DownloadInfo {
- GtkHTMLStream *stream;
- char *uri;
- char *buffer;
-
- gboolean error;
-} DownloadInfo;
-
-struct _ESummaryPrivate {
- GNOME_Evolution_Shell shell;
- GNOME_Evolution_ShellView shell_view_interface;
-
- GtkWidget *html_scroller;
- GtkWidget *html;
-
- GHashTable *protocol_hash;
-
- GList *connections;
-
- gpointer alarm;
-};
-
-typedef struct _ProtocolListener {
- ESummaryProtocolListener listener;
- void *closure;
-} ProtocolListener;
-
-
-static void
-destroy (GtkObject *object)
-{
- ESummary *summary;
- ESummaryPrivate *priv;
-
- summary = E_SUMMARY (object);
- priv = summary->priv;
-
- if (priv == NULL) {
- return;
- }
-
- 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 ();
-
- 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) {
- return;
- }
-
- string = g_string_new (HTML_1);
- t = time (NULL);
- strftime (date, 255, _("%A, %d %B %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);
- }
-
- html = e_summary_rdf_get_html (summary);
- if (html != NULL) {
- g_string_append (string, 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);
-}
-
-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 */
- return gnome_pixmap_file (filename);
-}
-
-static void
-close_callback (GnomeVFSAsyncHandle *handle,
- GnomeVFSResult result,
- gpointer data)
-{
- DownloadInfo *info = data;
-
- if (info->error) {
- gtk_html_stream_close (info->stream, GTK_HTML_STREAM_ERROR);
- } else {
- gtk_html_stream_close (info->stream, GTK_HTML_STREAM_OK);
- }
-
- g_free (info->uri);
- g_free (info->buffer);
- g_free (info);
-}
-
-static void
-read_callback (GnomeVFSAsyncHandle *handle,
- GnomeVFSResult result,
- gpointer buffer,
- GnomeVFSFileSize bytes_requested,
- GnomeVFSFileSize bytes_read,
- gpointer data)
-{
- DownloadInfo *info = data;
-
- if (result != GNOME_VFS_OK && result != GNOME_VFS_ERROR_EOF) {
- info->error = TRUE;
- gnome_vfs_async_close (handle, close_callback, info);
- }
-
- if (bytes_read == 0) {
- info->error = FALSE;
- gnome_vfs_async_close (handle, close_callback, info);
- } else {
- gtk_html_stream_write (info->stream, buffer, bytes_read);
- gnome_vfs_async_read (handle, buffer, 4095, read_callback, info);
- }
-}
-
-static void
-open_callback (GnomeVFSAsyncHandle *handle,
- GnomeVFSResult result,
- DownloadInfo *info)
-{
- if (result != GNOME_VFS_OK) {
- gtk_html_stream_close (info->stream, GTK_HTML_STREAM_ERROR);
- g_free (info->uri);
- g_free (info);
- return;
- }
-
- info->buffer = g_new (char, 4096);
- gnome_vfs_async_read (handle, info->buffer, 4095, read_callback, info);
-}
-
-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 void
-e_summary_url_requested (GtkHTML *html,
- const char *url,
- GtkHTMLStream *stream,
- ESummary *summary)
-{
- char *filename;
- GnomeVFSAsyncHandle *handle;
- DownloadInfo *info;
-
- 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;
- }
-
- info = g_new (DownloadInfo, 1);
- info->stream = stream;
- info->uri = filename;
- info->error = FALSE;
-
- gnome_vfs_async_open (&handle, filename, GNOME_VFS_OPEN_READ,
- (GnomeVFSAsyncOpenCallback) open_callback, info);
-}
-
-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 (t);
- summary->priv->alarm = alarm_add (day_end, alarm_fn, summary, NULL);
-
- e_summary_reconfigure (summary);
-}
-
-#define DEFAULT_HTML "<html><head><title>My Evolution</title></head><body bgcolor=\"#ffffff\">hello</body></html>"
-
-static void
-e_summary_init (ESummary *summary)
-{
- ESummaryPrivate *priv;
- GdkColor bgcolor = {0, 0xffff, 0xffff, 0xffff};
- time_t t, day_end;
-
- summary->priv = g_new (ESummaryPrivate, 1);
-
- priv = summary->priv;
-
- 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);
- gtk_html_load_from_string (GTK_HTML (priv->html), DEFAULT_HTML,
- strlen (DEFAULT_HTML));
-
- 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;
-
- alarm_init ();
- t = time (NULL);
- day_end = time_day_end (t);
- priv->alarm = alarm_add (day_end, alarm_fn, summary, NULL);
-
- summary->prefs_window = NULL;
- e_summary_preferences_init (summary);
-}
-
-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)
-{
- ESummary *summary;
-
- summary = gtk_type_new (e_summary_get_type ());
- summary->priv->shell = shell;
-
- e_summary_add_protocol_listener (summary, "evolution", e_summary_evolution_protocol_listener, summary);
-
- e_summary_mail_init (summary, shell);
- e_summary_calendar_init (summary);
- e_summary_tasks_init (summary);
- e_summary_rdf_init (summary);
- e_summary_weather_init (summary);
-
- e_summary_draw (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 My Evolution"), 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 My Evolution failed"));
- }
- }
-
- gtk_object_unref (GTK_OBJECT (print_master));
-}
-
-void
-e_summary_print (GtkWidget *widget,
- ESummary *summary)
-{
- 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->mail != NULL) {
- e_summary_mail_reconfigure (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);
- }
-}
-
-int
-e_summary_count_connections (ESummary *summary)
-{
- GList *p;
- int count = 0;
-
- if (summary == NULL) {
- return 0;
- }
-
- for (p = summary->priv->connections; p; p = p->next) {
- ESummaryConnection *c;
-
- c = p->data;
- count += c->count (summary, c->closure);
- }
-
- return count;
-}
-
-GList *
-e_summary_add_connections (ESummary *summary)
-{
- GList *p;
- GList *connections = NULL;
-
- if (summary == NULL) {
- return 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,
- gboolean online,
- ESummaryOnlineCallback callback,
- void *closure)
-{
- GList *p;
-
- if (summary == NULL) {
- return;
- }
-
- 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, online, c->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);
-}
diff --git a/my-evolution/e-summary.h b/my-evolution/e-summary.h
deleted file mode 100644
index 8c2b4e7ee9..0000000000
--- a/my-evolution/e-summary.h
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * e-summary.h: Header file for the ESummary object.
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Authors: Iain Holmes <iain@ximian.com>
- */
-
-#ifndef _E_SUMMARY_H__
-#define _E_SUMMARY_H__
-
-#include <gtk/gtkvbox.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 <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,
- 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_ShellView shell_view_interface;
-
- GtkWidget *prefs_window;
- gboolean online;
-};
-
-struct _ESummaryClass {
- GtkVBoxClass parent_class;
-};
-
-GtkType e_summary_get_type (void);
-GtkWidget *e_summary_new (const GNOME_Evolution_Shell shell);
-void e_summary_print (GtkWidget *widget,
- ESummary *summary);
-void e_summary_draw (ESummary *summary);
-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,
- gboolean online,
- ESummaryOnlineCallback callback,
- void *closure);
-void e_summary_add_online_connection (ESummary *summary,
- ESummaryConnection *connection);
-#endif
diff --git a/my-evolution/main.c b/my-evolution/main.c
deleted file mode 100644
index f13e76434c..0000000000
--- a/my-evolution/main.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * main.c: Main file for the Executive Summary
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Authors: Iain Holmes <iain@ximian.com>
- */
-
-#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 <libgnomevfs/gnome-vfs.h>
-#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 ();
- gnome_vfs_init ();
-
- /* 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 571f6d9c73..0000000000
--- a/my-evolution/metar.c
+++ /dev/null
@@ -1,668 +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) ? _("\260F") : _("\260C"))
-
-#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_("Smoke w/ thunders"), 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_("Volcanic ash w/ thunders"), 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_("Sprays"), N_("Sprays in the vicinity") , N_("Light sprays"), N_("Moderate sprays"), N_("Heavy sprays"), N_("Shallow sprays"), N_("Patches of sprays"), N_("Partial sprays"), "??", N_("Blowing sprays"), "??", N_("Drifting sprays"), N_("Freezing sprays") },
-/* 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 5817f015a4..0000000000
--- a/my-evolution/my-evolution-html.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * my-evolution-html.h: HTML as a #define
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * 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\" link=\"#314e6c\" alink=\"black\" vlink=\"#314e6c\">"\
-"<img src=\"empty.gif\" alt=\"\" width=\"10\" height=\"20\">"\
-"<table border=\"0\" numcols=\"4\" cellspacing=\"0\" cellpadding=\"0\" width=\"100%\">"\
-"<tbody><tr>"
-#endif
-
-/* Needs a stringified date */
-#define HTML_2 "<td align=\"Right\" colspan=\"4\"><b>%s</b><br> <img src=\"empty.gif\" width=\"1\" height=\"3\"></td>"
-
-#define HTML_3 "</tr><tr><td colspan=\"4\" 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=\"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 90be02ea0f..0000000000
--- a/my-evolution/my-evolution.glade
+++ /dev/null
@@ -1,1356 +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>GnomePropertyBox</class>
- <name>dialog1</name>
- <width>592</width>
- <position>GTK_WIN_POS_NONE</position>
- <modal>False</modal>
- <allow_shrink>False</allow_shrink>
- <allow_grow>False</allow_grow>
- <auto_shrink>False</auto_shrink>
-
- <widget>
- <class>GtkNotebook</class>
- <child_name>GnomePropertyBox:notebook</child_name>
- <name>notebook2</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>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox3</name>
- <homogeneous>False</homogeneous>
- <spacing>0</spacing>
-
- <widget>
- <class>GtkTable</class>
- <name>table1</name>
- <border_width>8</border_width>
- <rows>2</rows>
- <columns>3</columns>
- <homogeneous>False</homogeneous>
- <row_spacing>0</row_spacing>
- <column_spacing>0</column_spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label9</name>
- <label>All folders:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <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>False</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label10</name>
- <label>Display folders:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>2</left_attach>
- <right_attach>3</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>False</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkAlignment</class>
- <name>alignment1</name>
- <border_width>8</border_width>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xscale>1</xscale>
- <yscale>0</yscale>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</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>False</xfill>
- <yfill>False</yfill>
- </child>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox4</name>
- <homogeneous>False</homogeneous>
- <spacing>8</spacing>
-
- <widget>
- <class>GtkButton</class>
- <name>button4</name>
- <sensitive>False</sensitive>
- <can_focus>True</can_focus>
- <relief>GTK_RELIEF_NORMAL</relief>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>Placeholder</class>
- </widget>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>button5</name>
- <sensitive>False</sensitive>
- <can_focus>True</can_focus>
- <relief>GTK_RELIEF_NORMAL</relief>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>Placeholder</class>
- </widget>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label11</name>
- <label></label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <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>False</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkScrolledWindow</class>
- <name>scrolledwindow1</name>
- <hscrollbar_policy>GTK_POLICY_AUTOMATIC</hscrollbar_policy>
- <vscrollbar_policy>GTK_POLICY_AUTOMATIC</vscrollbar_policy>
- <hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy>
- <vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy>
- <child>
- <left_attach>2</left_attach>
- <right_attach>3</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>True</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
-
- <widget>
- <class>GtkCList</class>
- <name>clist1</name>
- <width>100</width>
- <height>150</height>
- <can_focus>True</can_focus>
- <columns>1</columns>
- <column_widths>80</column_widths>
- <selection_mode>GTK_SELECTION_EXTENDED</selection_mode>
- <show_titles>False</show_titles>
- <shadow_type>GTK_SHADOW_IN</shadow_type>
-
- <widget>
- <class>GtkLabel</class>
- <child_name>CList:title</child_name>
- <name>label12</name>
- <label>label27</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>
-
- <widget>
- <class>GtkScrolledWindow</class>
- <name>scrolledwindow2</name>
- <width>100</width>
- <height>150</height>
- <hscrollbar_policy>GTK_POLICY_AUTOMATIC</hscrollbar_policy>
- <vscrollbar_policy>GTK_POLICY_AUTOMATIC</vscrollbar_policy>
- <hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy>
- <vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy>
- <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>True</xexpand>
- <yexpand>True</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
-
- <widget>
- <class>GtkCList</class>
- <name>clist7</name>
- <can_focus>True</can_focus>
- <columns>1</columns>
- <column_widths>80</column_widths>
- <selection_mode>GTK_SELECTION_SINGLE</selection_mode>
- <show_titles>False</show_titles>
- <shadow_type>GTK_SHADOW_IN</shadow_type>
-
- <widget>
- <class>GtkLabel</class>
- <child_name>CList:title</child_name>
- <name>label40</name>
- <label>label40</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>
- </widget>
-
- <widget>
- <class>GtkCheckButton</class>
- <name>checkbutton1</name>
- <border_width>3</border_width>
- <can_focus>True</can_focus>
- <label>Show 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>GtkTable</class>
- <name>table3</name>
- <border_width>8</border_width>
- <rows>2</rows>
- <columns>3</columns>
- <homogeneous>False</homogeneous>
- <row_spacing>0</row_spacing>
- <column_spacing>0</column_spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label19</name>
- <label>All 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>
- <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>False</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label20</name>
- <label>Displayed feeds:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>2</left_attach>
- <right_attach>3</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>False</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkAlignment</class>
- <name>alignment3</name>
- <border_width>8</border_width>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xscale>1</xscale>
- <yscale>0</yscale>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</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>False</xfill>
- <yfill>False</yfill>
- </child>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox7</name>
- <homogeneous>False</homogeneous>
- <spacing>8</spacing>
-
- <widget>
- <class>GtkButton</class>
- <name>button9</name>
- <sensitive>False</sensitive>
- <can_focus>True</can_focus>
- <relief>GTK_RELIEF_NORMAL</relief>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>Placeholder</class>
- </widget>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>button10</name>
- <sensitive>False</sensitive>
- <can_focus>True</can_focus>
- <relief>GTK_RELIEF_NORMAL</relief>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>Placeholder</class>
- </widget>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label21</name>
- <label></label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <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>False</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkScrolledWindow</class>
- <name>scrolledwindow5</name>
- <hscrollbar_policy>GTK_POLICY_AUTOMATIC</hscrollbar_policy>
- <vscrollbar_policy>GTK_POLICY_AUTOMATIC</vscrollbar_policy>
- <hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy>
- <vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy>
- <child>
- <left_attach>2</left_attach>
- <right_attach>3</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>True</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
-
- <widget>
- <class>GtkCList</class>
- <name>clist5</name>
- <width>100</width>
- <height>150</height>
- <can_focus>True</can_focus>
- <columns>1</columns>
- <column_widths>80</column_widths>
- <selection_mode>GTK_SELECTION_SINGLE</selection_mode>
- <show_titles>False</show_titles>
- <shadow_type>GTK_SHADOW_IN</shadow_type>
-
- <widget>
- <class>GtkLabel</class>
- <child_name>CList:title</child_name>
- <name>label22</name>
- <label>label27</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>
-
- <widget>
- <class>GtkScrolledWindow</class>
- <name>scrolledwindow6</name>
- <width>100</width>
- <height>150</height>
- <hscrollbar_policy>GTK_POLICY_AUTOMATIC</hscrollbar_policy>
- <vscrollbar_policy>GTK_POLICY_AUTOMATIC</vscrollbar_policy>
- <hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy>
- <vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy>
- <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>True</xexpand>
- <yexpand>True</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
-
- <widget>
- <class>GtkCList</class>
- <name>clist6</name>
- <can_focus>True</can_focus>
- <columns>1</columns>
- <column_widths>80</column_widths>
- <selection_mode>GTK_SELECTION_EXTENDED</selection_mode>
- <show_titles>False</show_titles>
- <shadow_type>GTK_SHADOW_IN</shadow_type>
-
- <widget>
- <class>GtkLabel</class>
- <child_name>CList:title</child_name>
- <name>label23</name>
- <label>label26</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>
- </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>Refresh time (seconds):</label>
- <justify>GTK_JUSTIFY_LEFT</justify>
- <wrap>False</wrap>
- <xalign>0</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <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>Max 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>
- <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>1</value>
- <lower>0</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 new 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>GtkTable</class>
- <name>table2</name>
- <border_width>8</border_width>
- <rows>2</rows>
- <columns>3</columns>
- <homogeneous>False</homogeneous>
- <row_spacing>0</row_spacing>
- <column_spacing>0</column_spacing>
- <child>
- <padding>0</padding>
- <expand>True</expand>
- <fill>True</fill>
- </child>
-
- <widget>
- <class>GtkLabel</class>
- <name>label14</name>
- <label>All stations:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <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>False</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label15</name>
- <label>Display stations:</label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <child>
- <left_attach>2</left_attach>
- <right_attach>3</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>False</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkAlignment</class>
- <name>alignment2</name>
- <border_width>8</border_width>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xscale>1</xscale>
- <yscale>0</yscale>
- <child>
- <left_attach>1</left_attach>
- <right_attach>2</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>False</xfill>
- <yfill>False</yfill>
- </child>
-
- <widget>
- <class>GtkVBox</class>
- <name>vbox5</name>
- <homogeneous>False</homogeneous>
- <spacing>8</spacing>
-
- <widget>
- <class>GtkButton</class>
- <name>button6</name>
- <sensitive>False</sensitive>
- <can_focus>True</can_focus>
- <relief>GTK_RELIEF_NORMAL</relief>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>Placeholder</class>
- </widget>
- </widget>
-
- <widget>
- <class>GtkButton</class>
- <name>button7</name>
- <sensitive>False</sensitive>
- <can_focus>True</can_focus>
- <relief>GTK_RELIEF_NORMAL</relief>
- <child>
- <padding>0</padding>
- <expand>False</expand>
- <fill>False</fill>
- </child>
-
- <widget>
- <class>Placeholder</class>
- </widget>
- </widget>
- </widget>
- </widget>
-
- <widget>
- <class>GtkLabel</class>
- <name>label16</name>
- <label></label>
- <justify>GTK_JUSTIFY_CENTER</justify>
- <wrap>False</wrap>
- <xalign>0.5</xalign>
- <yalign>0.5</yalign>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <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>False</xfill>
- <yfill>False</yfill>
- </child>
- </widget>
-
- <widget>
- <class>GtkScrolledWindow</class>
- <name>scrolledwindow3</name>
- <hscrollbar_policy>GTK_POLICY_AUTOMATIC</hscrollbar_policy>
- <vscrollbar_policy>GTK_POLICY_AUTOMATIC</vscrollbar_policy>
- <hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy>
- <vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy>
- <child>
- <left_attach>2</left_attach>
- <right_attach>3</right_attach>
- <top_attach>1</top_attach>
- <bottom_attach>2</bottom_attach>
- <xpad>0</xpad>
- <ypad>0</ypad>
- <xexpand>True</xexpand>
- <yexpand>True</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
-
- <widget>
- <class>GtkCList</class>
- <name>clist3</name>
- <width>100</width>
- <height>150</height>
- <can_focus>True</can_focus>
- <columns>1</columns>
- <column_widths>80</column_widths>
- <selection_mode>GTK_SELECTION_SINGLE</selection_mode>
- <show_titles>False</show_titles>
- <shadow_type>GTK_SHADOW_IN</shadow_type>
-
- <widget>
- <class>GtkLabel</class>
- <child_name>CList:title</child_name>
- <name>label17</name>
- <label>label27</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>
-
- <widget>
- <class>GtkScrolledWindow</class>
- <name>scrolledwindow4</name>
- <width>100</width>
- <height>150</height>
- <hscrollbar_policy>GTK_POLICY_AUTOMATIC</hscrollbar_policy>
- <vscrollbar_policy>GTK_POLICY_AUTOMATIC</vscrollbar_policy>
- <hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy>
- <vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy>
- <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>True</xexpand>
- <yexpand>True</yexpand>
- <xshrink>False</xshrink>
- <yshrink>False</yshrink>
- <xfill>True</xfill>
- <yfill>True</yfill>
- </child>
-
- <widget>
- <class>GtkCTree</class>
- <name>ctree1</name>
- <can_focus>True</can_focus>
- <columns>1</columns>
- <column_widths>80</column_widths>
- <selection_mode>GTK_SELECTION_SINGLE</selection_mode>
- <show_titles>False</show_titles>
- <shadow_type>GTK_SHADOW_IN</shadow_type>
-
- <widget>
- <class>GtkLabel</class>
- <child_name>CTree:title</child_name>
- <name>label39</name>
- <label>label39</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>
- </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>Units: </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>metric</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>imperial</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>
- <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>1</value>
- <lower>0</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 week</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 month</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 f94dd64538..0000000000
--- a/my-evolution/weather.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * weather.h
- *
- * Copyright (C) 2001, Ximian, Inc
- *
- * Authors: Iain Holmes <iain@ximian.com>
- */
-
-#ifndef __WEATHER_H__
-#define __WEATHER_H__
-
-#include "e-summary-weather.h"
-
-#include <libgnomevfs/gnome-vfs.h>
-
-typedef struct _Weather {
- char *location;
- char *html;
- GnomeVFSAsyncHandle *handle;
- GString *string;
- char *buffer;
-
- 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