diff options
author | nobody <nobody@localhost> | 2001-08-20 23:43:30 +0800 |
---|---|---|
committer | nobody <nobody@localhost> | 2001-08-20 23:43:30 +0800 |
commit | 5fc6d1603d7a6280205f6220b2500adc78148990 (patch) | |
tree | ec1f6913db147c635df98f914ab6b3a1711e0fac /my-evolution | |
parent | db79f8266e5055e6d5512016dfa518f71ce1a8cc (diff) | |
download | gsoc2013-evolution-LIBGNOMEFILESEL_0_2.tar.gz gsoc2013-evolution-LIBGNOMEFILESEL_0_2.tar.zst gsoc2013-evolution-LIBGNOMEFILESEL_0_2.zip |
This commit was manufactured by cvs2svn to create tagLIBGNOMEFILESEL_0_2
'LIBGNOMEFILESEL_0_2'.
svn path=/tags/LIBGNOMEFILESEL_0_2/; revision=12306
Diffstat (limited to 'my-evolution')
32 files changed, 0 insertions, 12001 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 d885d16340..0000000000 --- a/my-evolution/ChangeLog +++ /dev/null @@ -1,570 +0,0 @@ -2001-08-19 Ettore Perazzoli <ettore@ximian.com> - - * component-factory.c: Change the type from "Summary" to "summary" - for consistency with the other folder types. - -2001-08-17 Zbigniew Chyla <cyba@gnome.pl> - - * my-evolution/e-summary-rdf.c (make_connection): - Marked string for translation (connection type). - - * my-evolution/e-summary-weather.c - (make_url): Split into two functions: make_url and make_anchor. - (weather_make_html): s/make_url/make_anchor/ - (make_connection): Marked connection type string for franslation, - assign the real URI to ->hostname (using make_url), not location code. - -2001-08-12 Zbigniew Chyla <cyba@gnome.pl> - - * e-summary-preferences.c (make_initial_weather_list), - e-summary-weather.c (e_summary_weather_init): - Don't hardcode the default list of stations, let translators define it - per locale/country. - -2001-08-17 Iain Holmes <iain@ximian.com> - - * e-summary-preferences.c (weather_all_select_row_cb): Unselect the - row if it isn't a leaf node. - (weather_add_clicked_cb): Return if location == NULL. - -2001-08-15 Iain Holmes <iain@ximian.com> - - * e-summary.c (e_summary_draw): Use the US format for dates (Yeeech) - -2001-08-15 Iain Holmes <iain@ximian.com> - - * e-summary.c: s/My Evolution/Summary/ - - * e-summary-preferences.c: s/My Evolution/Summary/ - - * component-factory.c: s/My Evolution/Summary/ - -2001-08-13 Iain Holmes <iain@ximian.com> - - * e-summary-weather.c: Set the default weather stations to Boston (boo) - and Xiamen (Yey) - -2001-08-13 Iain Holmes <iain@ximian.com> - - * e-summary-rdf.c: Set the default RDF to CNN - -2001-08-13 Jason Leach <jleach@ximian.com> - - * e-summary-mail.c (e_summary_mail_free): Disconnect our callbacks - when we are freeing the ESummaryMail. Fixes #6712. - -2001-08-09 Anna Marie Dirks <anna@ximian.com> - - * my-evolution-html.h : added more padding between the vertical - spacer and the icons for the mail/appointments/tasks summaries. - -2001-08-09 Anna Marie Dirks <anna@ximian.com> - - * my-evolution.glade : added accelerators to all useful widgets - in this file such that this dialog can now be fully navigated from - the keyboard. - - * e-summary-preferences.c : changed the construct_pixmap_button - function to take glade xml, an hbox and pixmap, making it possible - to use glade to define and change the keyboard accelerators, instead - of trying to do this in the c code. - -2001-08-06 Damon Chaplin <damon@ximian.com> - - * e-summary-tasks.c (sort_uids): - (get_todays_uids): - (generate_html): - * e-summary-calendar.c (sort_uids): free the CalComponentDateTime - and icaltimetype values after finishing with them. - -2001-08-03 Jason Leach <jleach@ximian.com> - - * e-summary-mail.c (update_folder_cb): Callback for the - EvolutionStorageListener::update_folder signal, so we can update - mail summaries when they change. Bug #4686. - -2001-08-02 Jason Leach <jleach@ximian.com> - - * e-summary-calendar.c (generate_html): Use the new and beautiful - icon from Jakub. - - * e-summary-mail.c (e_summary_mail_generate_html): Ditto. - - * e-summary-tasks.c (generate_html): Ditto. - -2001-07-23 Zbigniew Chyla <cyba@gnome.pl> - - * e-summary-rdf.c (display_doc): Convert translated string to UTF8. - -2001-07-30 Iain Holmes <iain@ximian.com> - - * e-summary-preferences.c: Remove the Wipe Trackers references. - - * e-summary-rdf.c: Remove the wip trackers as I'm not 100% sure what it - does, and it didn't work. - - * e-summary.h: Remove the wipe_trackers boolean - - * my-evolution.glade: Remove the wipe trackers and shrink the New Feed - button - -2001-07-30 Iain Holmes <iain@ximian.com> - - * e-sumary-calendar.c (generate_html): Correct the URL for the links. - -2001-07-27 Iain Holmes <iain@ximian.com> - - * Locations: Add some more German cities from s.kost@webmacher.de. - -2001-07-23 Iain Holmes <iain@ximian.com> - - * e-summary-preferences.c (add_dialog_clicked_cb): Add the new RDF to - the shown clist as well. - -2001-07-23 Iain Holmes <iain@ximian.com> - - * e-summary-mail.c (e_summary_mail_init): Move the storage register out - of here into a seperate function. - (e_summary_mail_register_storages): Register the local storage. - (e_summary_mail_register_storage): Register a single storage. - -2001-07-23 Iain Holmes <iain@ximian.com> - - * e-summary-preferences.c: Fix the KDE and Newsforge things. Change the - KDE rdf to the one that the KDE person told me :) - -2001-07-23 Jason Leach <jleach@ximian.com> - - * e-summary-preferences.c: Update the url (and site name) for the - KDE rdf. Bug #5145. - -2001-07-21 Ettore Perazzoli <ettore@ximian.com> - - * component-factory.c: Make the "My Evolution" folder - non-creatable by setting the `user_creatable' member of - `EvolutionShellComponentFolderType' to %FALSE. - -2001-07-20 Jason Leach <jleach@ximian.com> - - * e-summary-tasks.c: Revert last changes, URIs are now back to - original in shell. - -2001-07-19 Jason Leach <jleach@ximian.com> - - * e-summary-tasks.c: Update the evolution:/local/ URI's to - evolution:/Local Folders/ to go along with todays shell changes. - - * e-summary-mail.c: Ditto. - - * e-summary-calendar.c: Ditto. - -2001-07-19 Iain Holmes <iain@ximian.com> - - * e-summary-rdf.c (display_doc): Fix HTML - - * e-summary-mail.c (folder_gen_html): correct the folder name. - -2001-07-19 Iain Holmes <iain@ximian.com> - - * my-evolution-html.h: Set the text colour to black. Frank was claiming - it picked the default colour from the GTK+ theme, and if it was white - bad things happened. - -2001-07-18 Iain Holmes <iain@ximian.com> - - * e-summary-weather.c (weather_make_html): Remove the (more) link. - - * e-summary.c (e_summary_draw): Don't append NULL to the GString. - - * e-summary-tasks.c: Remove spewage. - -2001-07-18 Iain Holmes <iain@ximian.com> - - * e-summary-weather.c (weather_make_html): Remove spewage. - -2001-07-18 Iain Holmes <iain@ximian.com> - - * e-summary.c (e_summary_reconfigure): Reconfigure the tasks. - - * e-summary-tasks.c (generate_html): Obtain todays tasks. - (get_todays_uids): Make a list of todays uids. - -2001-07-18 Iain Holmes <iain@ximian.com> - - * e-summary-preferences.c (make_property_dialog): Create the image - buttons. - (construct_pixmap_button): Create a box with an image and text. - -2001-07-18 Iain Holmes <iain@ximian.com> - - * e-summary-preferences.c (e_summary_configure): Set the title on the - window. Just do a g_return_if_fail if the XML file couldn't be loaded. - -2001-07-16 Iain Holmes <iain@ximian.com> - - * e-summary-rdf.c (display_doc): Nicer error reporting. - - * e-summary-weather.c: Nicer error reporting. - -2001-07-13 Iain Holmes <iain@ximian.com> - - * e-summary-tasks.c: Fix the name of the icon. - -2001-07-13 Iain Holmes <iain@ximian.com> - - * e-summary-preferences.c (mail_add_clicked_cb): Set the property box - to changed. - -2001-07-13 Zbigniew Chyla <cyba@gnome.pl> - - * e-summary.c (e_summary_draw): Convert the date string to utf8 before - appending it to HTML. - -2001-07-12 Iain Holmes <iain@ximian.com> - - * metar.c: #include <config.h> - -2001-07-12 Iain Holmes <iain@ximian.com> - - * e-summary.c (e_summary_draw): put _() around the date string. - - * metar.c: Put some _() around things. - -2001-07-12 Iain Holmes <iain@ximian.com> - - * my-evolution.glade: Made the weather a single selection clist. - -2001-07-11 Iain Holmes <iain@ximian.com> - - * e-summary-mail.c (e_summary_mail_generate_html): Protect with - g_return_if_fail - -2001-07-11 Iain Holmes <iain@ximian.com> - - * e-summary.c (destroy): Destroy the alarm. - (e_summary_init): Init the alarm. - - * e-summary-mail.c (free_folder): Don't free the value. - -2001-07-11 Iain Holmes <iain@ximian.com> - - * e-summary.c (destroy): Destroy all the subcomponents. - - * e-summary-rdf.c (e_summary_rdf_free): Free and stop all tranfsers - - * e-summary-weather.c (e_summary_weather_free): Same. - - * e-summary-mail.c (e_summary_mail_free): Same. - - * e-summary-calendar.c (e_summary_calendar_free): Same. - - * e-summary-tasks.c (e_summary_tasks_free): Guess what. - -2001-07-10 Iain Holmes <iain@ximian.com> - - * e-summary-preferences.c: Correct the Register RDF url. - -2001-07-09 Iain Holmes <iain@ximian.com> - - * e-summary.c (e_summary_init): Connect a calendar alarm to be notified - of when the day changes. - - * Makefile.am: Link with libalarm.a - -2001-07-09 Iain Holmes <iain@ximian.com> - - * e-summary-weather.c (weather_make_html): Get an icon for the weather. - - * metar.[ch] (icon_from_weather): Work out what icon for a specific - weather type. - -2001-07-09 Iain Holmes <iain@ximian.com> - - * e-summary-rdf.c (tree_walk): Fix HTML so it doesn't give the big black - line - -2001-07-09 Iain Holmes <iain@ximian.com> - - * e-summary-tasks.c (generate_html): Fix same HTML bug as in calendar. - -2001-07-09 Iain Holmes <iain@ximian.com> - - * e-summary-calendar.c (generate_html): Show varying times depending - on how soon the appointment is. - -2001-07-09 Iain Holmes <iain@ximian.com> - - * e-summary-calendar.c (generate_html): Fix up the HTML so having - appointments doesn't mess up the display. Set the correct length of - time to show appointments. - -2001-07-09 Iain Holmes <iain@ximian.com> - - * e-summary-tasks.c (generate_html): Make the tasks switch to the - tasks folder when you click on them. - -2001-07-09 Kjartan Maraas <kmaraas@gnome.org> - - * e-summary-preferences.c: Added #include <config.h> to get - translations working. - -2001-07-06 Iain Holmes <iain@ximian.com> - - * e-summary-preferences.c (str_list_from_vector): Change the delimiter - (vector_from_str_list): Change the delimiter. - (fill_mail_all_clist): Fill the mail folder clist. - (fill_mail_shown_clist): Use nicer names. - (mail_add_clicked_cb): Add folders to the shown list. - - * e-summary-mail.c (e_summary_mail_fill_list): Flatten the hashtable - into the CList. - (e_summary_mail_uri_to_name): Get the pretty name for a uri. - -2001-07-06 Iain Holmes <iain@ximian.com> - - * e-summary-preferences.c (fill_rdf_shown_list): Attach data - (rdf_add_clicked_cb): Allow multiple rows to be removed. - (rdf_remove_clicked_cb): Use the data. - - * my-evolution.glade: Allow multiple selection in the RDF all clist. - Only allow single selection in the shown rdf list. - -2001-07-05 Iain Holmes <iain@ximian.com> - - * e-summary-preferences.c (rdf_new_url_clicked_cb): Change RDF to - news feed. - -2001-07-05 Iain Holmes <iain@ximian.com> - - * my-evolution.glade: Replace a table with a vbox so that the text - of the radio buttons can be clicked. Change RDF to News Feed - -2001-07-05 Iain Holmes <iain@ximian.com> - - * e-summary-preferences.c (add_dialog_clicked_cb): Fix warning - (fill_rdf_shown_clist): Fix warning. - (calendar_one_toggled_cb): Set preferences to the right toggle button. - (calendar_five_toggled_cb): Ditto - (calendar_week_toggled_cb): Ditto ditto - (calendar_month_toggled_cb): Ditto dotto - (calendar_all_toggled_cb): Set the amount of Tasks to be shown - (calendar_today_toggled_cb): Ditto - (make_property_dialog): Hook up the calendar radio buttons. - (e_summary_preferences_restore): Pass NULL as opt_default, not &ev. - -2001-07-05 Iain Holmes <iain@ximian.com> - - * e-summary-preferences.c (e_summary_preferences_restore): Add - My-Evolution to the namespace. - (e_summary_preferences_save): Ditto. - -2001-07-05 Iain Holmes <iain@ximian.com> - - * e-summary-preferences.c (e_summary_preferences_restore): Re-enabled. - Bonobo-conf doesn't seem to like NULL for opt_ev. - -2001-07-03 Iain Holmes <iain@ximian.com> - - * e-summary-prefences.c (e_summary_preferences_restore): Disabled until - memory corruption thing is found. - - * my-evolution.glade: Fix the radio button problem. - -2001-07-03 Iain Holmes <iain@ximian.com> - - * e-summary-factory.c: Fixed the Bonobo warning. - -2001-07-03 Iain Holmes <iain@ximian.com> - - * e-summary-preferences.c (e_summary_preferences_restore): Ditch - gnome-config and replace it with bonobo-conf. - (e_summary_preferences_save): Ditto. - - * e-summary-factory.c: Use the new print.png icon. - - * Makefile.am: Add bonobo conf CFLAGS and LIBS - -2001-07-03 Iain Holmes <iain@ximian.com> - - * e-summary.c (e_summary_set_online): Return if summary == NULL. - (e_summary_add_connections): Return NULL if summary == NULL. - (e_summary_count_connections): Return 0 if summary == NULL. - -2001-07-02 Iain Holmes <iain@ximian.com> - - * e-summary-tasks.[ch]: New files for tasks. - - * e-summary.c: USe the tasks. - -2001-07-02 Iain Holmes <iain@ximian.com> - - * Makefile.am: Add the glade files to the EXTRA_DIST - -2001-07-02 Ettore Perazzoli <ettore@ximian.com> - - * Makefile.am (evolution_executive_summary_SOURCES): Add - `e-summary-preferences.h'. - -2001-06-30 Iain Holmes <iain@ximian.com> - - * e-summary-preferences.c (fill_rdf_all_clist): Load the URLs from a - file. - (save_known_urls): Save the known URLs. - (add_dialog_clicked_cb): Close the dialog on Cancel. Save the URLs on - Ok. - (rdf_new_url_clicked_cb): Add some labels and an entry for the name. - -2001-06-30 Iain Holmes <iain@ximian.com> - - * e-summary-preferences.c (fill_rdf_all_clist): Fill with names - instead of URLs. - (find_name_for_url): Given a URL find a name for it if we know it. - (rdf_add_clicked_cb): Add the name to the clist and the url to the - list. - -2001-06-30 Iain Holmes <iain@ximian.com> - - * e-summary-preferences.c (add_dialog_clicked_cb): Add the new url to - the list. - (rdf_new_url_clicked_cb): Create a dialog and allow the user to add - new urls. - -2001-06-30 Iain Holmes <iain@ximian.com> - - * e-summary-rdf.c (tree_walk): Remove spewage. - (e_summary_rdf_count): - (e_summary_rdf_add): - (make_connection): - (e_summary_rdf_set_online): Callbacks for the online_handler stuff. - (e_summary_rdf_init): Setup the offline handler stuff. - (close_callback): Update the number of onlines there are. - - * e-summary-weather.c (close_callback): Update the number of onlines. - (e_summary_weather_count): Count the number of active downloads. - (e_summary_weather_add): Make a list of active downloads. - (make_connection): Make connection data. - (e_summary_weather_set_online): Set if the component is online or not. - (e_summary_weather_init): Setup the offline handler stuff. - - * e-summary.c (e_summary_count_connections): Call all the callbacks - in the various modules that have online data and count the number of - connections. - (e_summary_add_connections): Make a list of them all. - (e_summary_set_online): Set the online status for each registered - module. - (e_summary_add_online_connection): Register a new module. - - * e-summary-offline-handler.[ch]: BonoboXObject implementing the - GNOME::Evolution::Offline interface. - - * e-summary-factory.c (factory_fn): Create an offline handler. - - * Makefile.am: Compile e-summary-offline-handler.[ch] - -2001-06-30 Zbigniew Chyla <cyba@gnome.pl> - - * e-summary-calendar.c (generate_html): - Marked strings for translation + conversion to utf8. - - * e-summary-mail.c - Added missing #include <config.h> - (e_summary_mail_generate_html): - Marked strings for translation + conversion to utf8. - - * e-summary-weather.c - (e_summary_weather_get_html, open_callback): - Marked strings for translation + conversion to utf8. - (weather_make_html): Fixed leaks. - - * e-summary-rdf.c - (tree_walk): Fixed leaks. - (read_callback): Marked strings for translation. - -2001-06-29 Iain Holmes <iain@ximian.com> - - * e-summary.c (e_summary_draw): Resurrect the hack to stop GtkHTML from - returning to the top when it's redrawn. - -2001-06-29 Iain Holmes <iain@ximian.com> - - * e-summary-preferences.c (property_box_destroy_cb): Hook up the saving. - (str_list_from_vector): Fix memory corruption. - (e_summary_preferences_save): Write the preferences out to disk. - I *always* forget that. - - * e-summary-mail.c (e_summary_mail_init): Init ->shown to NULL. - -2001-06-29 Iain Holmes <iain@ximian.com> - - * e-summary-preferences.c: Do everything preferences related. - - * my-evolution.glade: Glade file for the preferences box. - - * e-summary-calendar.c (e_summary_calendar_reconfigure): Stub for later - - * e-summary-calendar.h: Some enums for settings. - - * e-summary-mail.c (folder_gen_html): Change the prototype so it - doesn't work as a hash table foreach function. - (new_folder_cb): Fix typo in comment :) - Create a list of folders we display. - (remove_folder_cb): Remove the folder from the display folder list. - (maybe_add_to_shown): Hash table foreach function to create a display - folder list. - (e_summary_mail_reconfigure): Recreate the mail HTML. - - * e-summary-rdf.c (tree_walk): Obey preferences. - (e_summary_rdf_update): Separate the updating and downloading logic. - (e_summary_rdf_init): Start an updating timeout. - (e_summary_rdf_reconfigure): Recreate the RDF html. - - * e-summary-weather.c (e_summary_weather_update): Separate the updating - and downloading logic. - (e_summary_weather_init): Start timeout. - (e_summary_weather_code_to_name): Convert code to location name. - (e_summary_weather_ctree_fill): Fill a CTree with the location data. - (e_summary_weather_reconfigure): Regenerate the HTML. - - * e-summary.c (e_summary_init): Create the preferences. - (e_summary_reconfigure): Reconfigure the whole summary. - - * metar.c: Obey preferences. - -2001-06-27 Iain Holmes <iain@ximian.com> - - * e-summary-factory.c: Add the pixmaps to the menus. - Add a new menu item for the configuration stuff. - -2001-06-27 Ettore Perazzoli <ettore@ximian.com> - - * component-factory.c (factory_fn): Pass NULL as the - @external_uri_schemas argument to - `evolution_shell_component_new()'. - -2001-06-21 Rodrigo Moya <rodrigo@ximian.com> - - * Makefile.am: added libwombat to LDADD - -2001-06-15 JP Rosevear <jpr@ximian.com> - - * Makefile.am: Get weather.h disted - -2001-06-15 JP Rosevear <jpr@ximian.com> - - * Makefile.am: Fix includes so that libical need not be installed - -2001-06-14 JP Rosevear <jpr@ximian.com> - - * Makefile.am: add my-evolution-html.h to the sources - -2001-06-13 JP Rosevear <jpr@ximian.com> - - * Makefile.am: Make e-summary-type.h a source so it gets disted - -2001-06-08 Iain Holmes <iain@ximian.com> - - * e-summary.c (e_summary_init): Allow horizontal scrollbars. - - * e-summary-weather.c (e_summary_weather_init): Change the name of the - protocol registered. - (weather_make_html): Use the weather protocol instead of more. diff --git a/my-evolution/GNOME_Evolution_Summary.oaf.in b/my-evolution/GNOME_Evolution_Summary.oaf.in deleted file mode 100644 index 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 bcb1f69df4..0000000000 --- a/my-evolution/component-factory.c +++ /dev/null @@ -1,146 +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[] = { - { "summary", "evolution-today.png", N_("Summary"), N_("Folder containing the Evolution Summary"), FALSE, NULL, NULL }, - { NULL, NULL } -}; - -static char *evolution_dir = NULL; - -/* EvolutionShellComponent methods and signals */ - -static EvolutionShellComponentResult -create_view (EvolutionShellComponent *shell, - const char *physical_uri, - const char *folder_type, - BonoboControl **control_return, - void *closure) -{ - EvolutionShellClient *shell_client; - ESummaryOfflineHandler *offline_handler; - GNOME_Evolution_Shell corba_shell; - BonoboControl *control; - - - g_print ("folder_type: %s\n", folder_type); - if (g_strcasecmp (folder_type, "Summary") != 0) { - return EVOLUTION_SHELL_COMPONENT_UNSUPPORTEDTYPE; - } - - offline_handler = gtk_object_get_data (GTK_OBJECT (shell), - "offline-handler"); - shell_client = evolution_shell_component_get_owner (shell); - corba_shell = bonobo_object_corba_objref (BONOBO_OBJECT (shell_client)); - control = e_summary_factory_new_control (physical_uri, corba_shell, - offline_handler); - 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 55a8bb40ef..0000000000 --- a/my-evolution/e-summary-calendar.c +++ /dev/null @@ -1,350 +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; - int retval; - - /* 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); - - retval = icaltime_compare (*start_a.value, *start_b.value); - - cal_component_free_datetime (&start_a); - cal_component_free_datetime (&start_b); - - return retval; -} - -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); - - cal_component_free_datetime (&start); - cal_component_free_datetime (&end); - - 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\">   " - "<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 1f709e1561..0000000000 --- a/my-evolution/e-summary-factory.c +++ /dev/null @@ -1,141 +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 ("Reload", e_summary_reload), - 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 81397e6498..0000000000 --- a/my-evolution/e-summary-mail.c +++ /dev/null @@ -1,544 +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); - - 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); - - gtk_signal_disconnect_by_func (GTK_OBJECT (mail->storage_listener), - GTK_SIGNAL_FUNC (new_folder_cb), summary); - gtk_signal_disconnect_by_func (GTK_OBJECT (mail->storage_listener), - GTK_SIGNAL_FUNC (remove_folder_cb), summary); - gtk_signal_disconnect_by_func (GTK_OBJECT (mail->storage_listener), - GTK_SIGNAL_FUNC (update_folder_cb), summary); - - 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 7fc0f07c38..0000000000 --- a/my-evolution/e-summary-preferences.c +++ /dev/null @@ -1,1434 +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) -{ - /* translators: Put here a list of codes for locations you want to - see in My Evolution by default. You can find the list of all - stations and their codes in Evolution sources - (evolution/my-evolution/Locations) */ - char *default_stations = _("KBOS:ZSAM:EGAA"), **stations_v, **p; - GList *stations = NULL; - - stations_v = g_strsplit (default_stations, ":", 0); - g_assert (stations_v != NULL); - for (p = stations_v; *p != NULL; p++) { - stations = g_list_prepend (stations, *p); - } - g_free (stations_v); - - prefs->stations = g_list_reverse (stations); -} - -/* Load the prefs off disk */ - -static char * -vector_from_str_list (GList *strlist) -{ - char *vector; - GString *str; - - 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) -{ - ESummaryWeatherLocation *location; - - location = gtk_ctree_node_get_row_data (GTK_CTREE (pd->weather->all), row); - if (location == NULL) { - gtk_ctree_unselect (ctree, row); - return; - } - - 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); - - g_return_if_fail (location != NULL); - - 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 (GladeXML *xml, - const char *id, - const char *image) -{ - GtkWidget *box, *pixmap; - - box = glade_xml_get_widget (xml, id); - - pixmap = gnome_stock_pixmap_widget (NULL, image); - gtk_box_pack_start (GTK_BOX (box), pixmap, TRUE, TRUE, 0); - - gtk_widget_show (pixmap); -} - -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 (pd->xml, "hbox-mailadd", - 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 (pd->xml, "hbox-mailremove", - 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 (pd->xml, "hbox-newsadd", - 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 (pd->xml, "hbox-newsremove", - 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 (pd->xml, "hbox-weatheradd", - 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 (pd->xml, "hbox-weatherremove", - 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), _("Summary 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 3ab6fe2816..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, "&", 5) == 0) { - *w++ = '&'; - r += 5; - continue; - } - if (memcmp (r, "<", 4) == 0) { - *w++ = '<'; - r += 4; - continue; - } - if (memcmp (r, ">", 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://www.cnn.com/cnn.rss"); - 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 22428aa5ce..0000000000 --- a/my-evolution/e-summary-tasks.c +++ /dev/null @@ -1,362 +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; - int retval; - - /* 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); - - retval = icaltime_compare (*start_a.value, *start_b.value); - - cal_component_free_datetime (&start_a); - cal_component_free_datetime (&start_b); - - return retval; -} - -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)); - } - } - cal_component_free_datetime (&end); - } - - 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\">   " - "<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\">   " - "<font size=\"-1\"><strike><a href=\"evolution:/local/Tasks\">%s</a></strike></font><br>", - text.value); - cal_component_free_icaltimetype (completed); - } - - 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 cd349d8710..0000000000 --- a/my-evolution/e-summary-weather.c +++ /dev/null @@ -1,808 +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 *code) -{ - return g_strdup_printf ("http://weather.noaa.gov/cgi-bin/mgetmetar.pl?cccc=%s", code); -} - -static char * -make_anchor (const char *name, const char *code) -{ - char *url, *anchor; - - url = make_url (code); - anchor = g_strdup_printf ("<a href=\"%s\">%s</a>", url, name); - g_free (url); - - return anchor; -} - -static void -weather_make_html (Weather *w) -{ - GString *string; - ESummaryWeatherLocation *location; - char *sky, *temp, *cond, *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\"> <b>", icon_name); - location = g_hash_table_lookup (locations_hash, w->location); - if (location == NULL) { - url = make_anchor (w->location, w->location); - } else { - url = make_anchor (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, ®ions); - 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 = make_url (w->location); - data->type = g_strdup (_("Weather")); - - return data; -} - -static GList * -e_summary_weather_add (ESummary *summary, - void *data) -{ - ESummaryWeather *weather; - GList *p, *connections = NULL; - - weather = summary->weather; - for (p = weather->weathers; p; p = p->next) { - Weather *w = p->data; - - if (w->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) { - /* translators: Put here a list of codes for locations you want to - see in My Evolution by default. You can find the list of all - stations and their codes in Evolution sources - (evolution/my-evolution/Locations) */ - char *default_stations = _("KBOS:ZSAM:EGAA"), **stations_v, **p; - - stations_v = g_strsplit (default_stations, ":", 0); - g_assert (stations_v != NULL); - for (p = stations_v; *p != NULL; p++) { - e_summary_weather_add_location (summary, *p); - } - g_strfreev (stations_v); - timeout = 600; - } else { - GList *p; - - for (p = prefs->stations; p; p = p->next) { - e_summary_weather_add_location (summary, p->data); - } - timeout = prefs->weather_refresh_time; - } - - e_summary_weather_update (summary); - - weather->timeout = gtk_timeout_add (timeout * 1000, - (GtkFunction) e_summary_weather_update, - summary); - return; -} - -const char * -e_summary_weather_code_to_name (const char *code) -{ - ESummaryWeatherLocation *location; - - if (locations_hash == NULL) { - if (e_summary_weather_init_locations () == FALSE) { - return code; - } - } - - location = g_hash_table_lookup (locations_hash, code); - if (location == NULL) { - return code; - } else { - return location->name; - } -} - -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, ®ions); - 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 1ea6534d1b..0000000000 --- a/my-evolution/e-summary.c +++ /dev/null @@ -1,748 +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, %B %e %Y"), localtime (&t)); - - date_utf = e_utf8_from_locale_string (date); - html = g_strdup_printf (HTML_2, date_utf); - g_free (date_utf); - g_string_append (string, html); - g_free (html); - g_string_append (string, HTML_3); - - /* Weather and RDF stuff here */ - html = e_summary_weather_get_html (summary); - if (html != NULL) { - g_string_append (string, html); - } - - 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>Summary</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 Summary"), GNOME_PRINT_DIALOG_COPIES)); - gnome_dialog_set_default (GNOME_DIALOG (gpd), GNOME_PRINT_PRINT); - - switch (gnome_dialog_run (GNOME_DIALOG (gpd))) { - case GNOME_PRINT_PRINT: - break; - - case GNOME_PRINT_PREVIEW: - preview = TRUE; - break; - - case -1: - return; - - default: - gnome_dialog_close (GNOME_DIALOG (gpd)); - return; - } - - gnome_print_dialog_get_copies (gpd, &copies, &collate); - printer = gnome_print_dialog_get_printer (gpd); - gnome_dialog_close (GNOME_DIALOG (gpd)); - } - - print_master = gnome_print_master_new (); - - if (printer) { - gnome_print_master_set_printer (print_master, printer); - } - gnome_print_master_set_copies (print_master, copies, collate); - print_context = gnome_print_master_get_context (print_master); - gtk_html_print (GTK_HTML (summary->priv->html), print_context); - gnome_print_master_close (print_master); - - if (preview) { - gboolean landscape = FALSE; - GnomePrintMasterPreview *preview; - - preview = gnome_print_master_preview_new_with_orientation ( - print_master, _("Print Preview"), landscape); - gtk_widget_show (GTK_WIDGET (preview)); - } else { - int result = gnome_print_master_print (print_master); - - if (result == -1) { - e_notice (NULL, GNOME_MESSAGE_BOX_ERROR, - _("Printing of Summary failed")); - } - } - - gtk_object_unref (GTK_OBJECT (print_master)); -} - -void -e_summary_print (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); - } -} - -void -e_summary_reload (GtkWidget *widget, - ESummary *summary) -{ - e_summary_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 64d1918dd4..0000000000 --- a/my-evolution/e-summary.h +++ /dev/null @@ -1,133 +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_reload (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 b1f031f54b..0000000000 --- a/my-evolution/my-evolution-html.h +++ /dev/null @@ -1,54 +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=\"5\" cellspacing=\"0\" cellpadding=\"0\" width=\"100%\">"\ -"<tbody><tr>" -#endif - -/* Needs a stringified date */ -#define HTML_2 "<td align=\"Right\" colspan=\"5\"><b>%s</b><br> <img src=\"empty.gif\" width=\"1\" height=\"3\"></td>" - -#define HTML_3 "</tr><tr><td colspan=\"5\" bgcolor=\"#000000\"><img src=\"empty.gif\" width=\"1\" height=\"1\"></td></tr>"\ -"<tr valign=\"Top\">" \ -"<td width=\"100%\">"\ - -/* Weather stuff goes here */ - -/* RDF Stuff goes here */ - -#define HTML_4 "</td><td> </td><td width=\"1\" bgcolor=\"#000000\"><img src=\"empty.gif\" width=\"1\" height=\"1\"></td>"\ -"<td width=\"15\" background=\"pattern.png\">   </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 c9e75c5b7f..0000000000 --- a/my-evolution/my-evolution.glade +++ /dev/null @@ -1,1497 +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> - <focus_target>clist7</focus_target> - <child> - <left_attach>0</left_attach> - <right_attach>1</right_attach> - <top_attach>0</top_attach> - <bottom_attach>1</bottom_attach> - <xpad>0</xpad> - <ypad>0</ypad> - <xexpand>False</xexpand> - <yexpand>False</yexpand> - <xshrink>False</xshrink> - <yshrink>False</yshrink> - <xfill>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> - <focus_target>clist1</focus_target> - <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>GtkHBox</class> - <name>hbox-mailadd</name> - <homogeneous>False</homogeneous> - <spacing>0</spacing> - - <widget> - <class>GtkLabel</class> - <name>label41</name> - <label>_Add</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>True</expand> - <fill>True</fill> - </child> - </widget> - </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>GtkHBox</class> - <name>hbox-mailremove</name> - <homogeneous>False</homogeneous> - <spacing>0</spacing> - - <widget> - <class>GtkLabel</class> - <name>label42</name> - <label> _Remove</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>True</expand> - <fill>True</fill> - </child> - </widget> - </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> - <focus_target>clist6</focus_target> - <child> - <left_attach>0</left_attach> - <right_attach>1</right_attach> - <top_attach>0</top_attach> - <bottom_attach>1</bottom_attach> - <xpad>0</xpad> - <ypad>0</ypad> - <xexpand>False</xexpand> - <yexpand>False</yexpand> - <xshrink>False</xshrink> - <yshrink>False</yshrink> - <xfill>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> - <focus_target>clist5</focus_target> - <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>GtkHBox</class> - <name>hbox-newsadd</name> - <homogeneous>False</homogeneous> - <spacing>0</spacing> - - <widget> - <class>GtkLabel</class> - <name>label43</name> - <label>_Add</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>True</expand> - <fill>True</fill> - </child> - </widget> - </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>GtkHBox</class> - <name>hbox9</name> - <homogeneous>False</homogeneous> - <spacing>0</spacing> - - <widget> - <class>GtkHBox</class> - <name>hbox-newsremove</name> - <homogeneous>False</homogeneous> - <spacing>0</spacing> - <child> - <padding>0</padding> - <expand>True</expand> - <fill>True</fill> - </child> - - <widget> - <class>GtkLabel</class> - <name>label47</name> - <label> _Remove</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>True</expand> - <fill>True</fill> - </child> - </widget> - </widget> - </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> - <focus_target>spinbutton1</focus_target> - <child> - <left_attach>0</left_attach> - <right_attach>1</right_attach> - <top_attach>0</top_attach> - <bottom_attach>1</bottom_attach> - <xpad>0</xpad> - <ypad>0</ypad> - <xexpand>False</xexpand> - <yexpand>False</yexpand> - <xshrink>False</xshrink> - <yshrink>False</yshrink> - <xfill>True</xfill> - <yfill>False</yfill> - </child> - </widget> - - <widget> - <class>GtkLabel</class> - <name>label29</name> - <label>Ma_x number of items shown:</label> - <justify>GTK_JUSTIFY_LEFT</justify> - <wrap>False</wrap> - <xalign>0</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - <focus_target>spinbutton4</focus_target> - <child> - <left_attach>0</left_attach> - <right_attach>1</right_attach> - <top_attach>1</top_attach> - <bottom_attach>2</bottom_attach> - <xpad>0</xpad> - <ypad>0</ypad> - <xexpand>False</xexpand> - <yexpand>False</yexpand> - <xshrink>False</xshrink> - <yshrink>False</yshrink> - <xfill>True</xfill> - <yfill>False</yfill> - </child> - </widget> - - <widget> - <class>GtkSpinButton</class> - <name>spinbutton1</name> - <can_focus>True</can_focus> - <climb_rate>1</climb_rate> - <digits>0</digits> - <numeric>False</numeric> - <update_policy>GTK_UPDATE_ALWAYS</update_policy> - <snap>False</snap> - <wrap>False</wrap> - <value>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 n_ew 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>Al_l stations:</label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>False</wrap> - <xalign>0.5</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - <focus_target>ctree1</focus_target> - <child> - <left_attach>0</left_attach> - <right_attach>1</right_attach> - <top_attach>0</top_attach> - <bottom_attach>1</bottom_attach> - <xpad>0</xpad> - <ypad>0</ypad> - <xexpand>False</xexpand> - <yexpand>False</yexpand> - <xshrink>False</xshrink> - <yshrink>False</yshrink> - <xfill>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> - <focus_target>clist3</focus_target> - <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>GtkHBox</class> - <name>hbox-weatheradd</name> - <homogeneous>False</homogeneous> - <spacing>0</spacing> - - <widget> - <class>GtkLabel</class> - <name>label45</name> - <label>_Add</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>True</expand> - <fill>True</fill> - </child> - </widget> - </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>GtkHBox</class> - <name>hbox-weatherremove</name> - <homogeneous>False</homogeneous> - <spacing>0</spacing> - - <widget> - <class>GtkLabel</class> - <name>label48</name> - <label> _Remove</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>True</expand> - <fill>True</fill> - </child> - </widget> - </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>m_etric</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> - <focus_target>spinbutton5</focus_target> - <child> - <padding>0</padding> - <expand>False</expand> - <fill>False</fill> - </child> - </widget> - - <widget> - <class>GtkSpinButton</class> - <name>spinbutton5</name> - <can_focus>True</can_focus> - <climb_rate>1</climb_rate> - <digits>0</digits> - <numeric>False</numeric> - <update_policy>GTK_UPDATE_ALWAYS</update_policy> - <snap>False</snap> - <wrap>False</wrap> - <value>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 w_eek</label> - <active>False</active> - <draw_indicator>True</draw_indicator> - <group>days_group</group> - <child> - <padding>0</padding> - <expand>False</expand> - <fill>False</fill> - </child> - </widget> - - <widget> - <class>GtkRadioButton</class> - <name>radiobutton6</name> - <can_focus>True</can_focus> - <label>One mont_h</label> - <active>False</active> - <draw_indicator>True</draw_indicator> - <group>days_group</group> - <child> - <padding>0</padding> - <expand>False</expand> - <fill>False</fill> - </child> - </widget> - </widget> - </widget> - - <widget> - <class>GtkFrame</class> - <name>frame5</name> - <border_width>3</border_width> - <label>Tasks </label> - <label_xalign>0</label_xalign> - <shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type> - <child> - <padding>0</padding> - <expand>False</expand> - <fill>False</fill> - </child> - - <widget> - <class>GtkHBox</class> - <name>hbox3</name> - <homogeneous>False</homogeneous> - <spacing>0</spacing> - - <widget> - <class>GtkRadioButton</class> - <name>radiobutton1</name> - <can_focus>True</can_focus> - <label>Show _all tasks</label> - <active>False</active> - <draw_indicator>True</draw_indicator> - <group>tasks_group</group> - <child> - <padding>0</padding> - <expand>False</expand> - <fill>False</fill> - </child> - </widget> - - <widget> - <class>GtkRadioButton</class> - <name>radiobutton2</name> - <can_focus>True</can_focus> - <label>Show _today's tasks</label> - <active>False</active> - <draw_indicator>True</draw_indicator> - <group>tasks_group</group> - <child> - <padding>0</padding> - <expand>False</expand> - <fill>False</fill> - </child> - </widget> - </widget> - </widget> - </widget> - - <widget> - <class>GtkLabel</class> - <child_name>Notebook:tab</child_name> - <name>label8</name> - <label>_Schedule</label> - <justify>GTK_JUSTIFY_CENTER</justify> - <wrap>False</wrap> - <xalign>0.5</xalign> - <yalign>0.5</yalign> - <xpad>0</xpad> - <ypad>0</ypad> - </widget> - </widget> -</widget> - -</GTK-Interface> diff --git a/my-evolution/weather.h b/my-evolution/weather.h deleted file mode 100644 index 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 |