--- /dev/null
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
--- /dev/null
+# This is an en_US "translation" file for Maemo Mapper. To translate this to
+# another language, first copy this file to a filename with the appropriate
+# language/country code, then modify the "msgstr" strings with the correct
+# translation.
+#
+# Copyright (C) 2006 John Costigan
+# This file is distributed under the same license as the maemo-mapper package.
+# John Costigan <gnuite@gmail.com>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: maemo-mapper 1.0.2\n"
+"Report-Msgid-Bugs-To: gnuite@gmail.com\n"
+"POT-Creation-Date: 2006-07-01 05:57-0400\n"
+"PO-Revision-Date: 2006-07-01 05:57-0400\n"
+"Last-Translator: John Costigan <gnuite@gmail.com>\n"
+"Language-Team: John Costigan <gnuite@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../src/maemo-mapper.c:1749
+msgid "Advance Notice"
+msgstr "Advance Notice"
+
+#: ../src/maemo-mapper.c:1745
+msgid "Announce"
+msgstr "Announce"
+
+#: ../src/maemo-mapper.c:5069
+msgid "Area"
+msgstr "Area"
+
+#: ../src/maemo-mapper.c:1718 ../src/maemo-mapper.c:2291
+msgid "Auto-Center"
+msgstr "Auto-Center"
+
+#: ../src/maemo-mapper.c:4931
+msgid "Auto-Center Mode: Lat/Lon"
+msgstr "Auto-Center Mode: Lat/Lon"
+
+#: ../src/maemo-mapper.c:4916
+msgid "Auto-Center Mode: Lead"
+msgstr "Auto-Center Mode: Lead"
+
+#: ../src/maemo-mapper.c:4945
+msgid "Auto-Center Off"
+msgstr "Auto-Center Off"
+
+#: ../src/maemo-mapper.c:2265
+msgid "Auto-Download"
+msgstr "Auto-Download"
+
+#: ../src/maemo-mapper.c:4441
+msgid "Auto-Update"
+msgstr "Auto-Update"
+
+#: ../src/maemo-mapper.c:5132
+msgid "Bottom-Right"
+msgstr "Bottom-Right"
+
+#: ../src/maemo-mapper.c:1711
+msgid "Browse..."
+msgstr "Browse..."
+
+#: ../src/maemo-mapper.c:1701
+msgid "Cache Dir."
+msgstr "Cache Dir."
+
+#: ../src/maemo-mapper.c:5340
+msgid ""
+"Cannot enable GPS until a GPS Receiver MAC is set in the Settings dialog box."
+msgstr ""
+"Cannot enable GPS until a GPS Receiver MAC is set in the Settings dialog box."
+
+#: ../src/maemo-mapper.c:1657
+msgid "Channel"
+msgstr "Channel"
+
+#: ../src/maemo-mapper.c:2240 ../src/maemo-mapper.c:2254
+#: ../src/maemo-mapper.c:5057
+msgid "Clear"
+msgstr "Clear"
+
+#: ../src/maemo-mapper.c:2330
+msgid "Close"
+msgstr "Close"
+
+#: ../src/maemo-mapper.c:5266
+#, c-format
+msgid ""
+"Confirm download of %d maps\n"
+"(up to about %.2f MB)\n"
+msgstr ""
+"Confirm download of %d maps\n"
+"(up to about %.2f MB)\n"
+
+#: ../src/maemo-mapper.c:1862
+msgid "Could not create Map Cache directory."
+msgstr "Could not create Map Cache directory."
+
+#: ../src/maemo-mapper.c:2006
+msgid ""
+"Could not create Map Cache directory.\n"
+"Please set a valid Map Cache directory in the Settings dialog box."
+msgstr ""
+"Could not create Map Cache directory.\n"
+"Please set a valid Map Cache directory in the Settings dialog box."
+
+#: ../src/maemo-mapper.c:4519
+msgid "Could not generate directions. Make sure your locations are valid."
+msgstr "Could not generate directions. Make sure your locations are valid."
+
+#: ../src/maemo-mapper.c:4458
+msgid "Destination"
+msgstr "Destination"
+
+#: ../src/maemo-mapper.c:2261
+msgid "Download Along Route"
+msgstr "Download Along Route"
+
+#: ../src/maemo-mapper.c:2263
+msgid "Download Area..."
+msgstr "Download Area..."
+
+#: ../src/maemo-mapper.c:5051
+msgid "Download Maps by Area"
+msgstr "Download Maps by Area"
+
+#: ../src/maemo-mapper.c:4415
+msgid "Download Route"
+msgstr "Download Route"
+
+#: ../src/maemo-mapper.c:2234
+msgid "Download..."
+msgstr "Download..."
+
+#: ../src/maemo-mapper.c:3558
+#, c-format
+msgid "Downloading %s\n"
+msgstr "Downloading %s\n"
+
+#: ../src/maemo-mapper.c:2688
+msgid "Downloading maps"
+msgstr "Downloading maps"
+
+#: ../src/maemo-mapper.c:2318
+msgid "Enable GPS"
+msgstr "Enable GPS"
+
+#: ../src/maemo-mapper.c:1761
+msgid "Enable Voice Synthesis (requires flite)"
+msgstr "Enable Voice Synthesis (requires flite)"
+
+#: ../src/maemo-mapper.c:3785 ../src/maemo-mapper.c:4575
+#: ../src/maemo-mapper.c:4611 ../src/maemo-mapper.c:4662
+msgid "Error parsing GPX file."
+msgstr "Error parsing GPX file."
+
+#: ../src/maemo-mapper.c:4677
+#, c-format
+msgid ""
+"Error while writing to file:\n"
+"%s\n"
+"File is incomplete."
+msgstr ""
+"Error while writing to file:\n"
+"%s\n"
+"File is incomplete."
+
+#: ../src/maemo-mapper.c:4769 ../src/maemo-mapper.c:4822
+msgid "Error writing GPX file."
+msgstr "Error writing GPX file."
+
+#: ../src/maemo-mapper.c:742
+msgid "Establishing GPS fix"
+msgstr "Establishing GPS fix"
+
+#: ../src/maemo-mapper.c:4512
+#, c-format
+msgid ""
+"Failed to connect to GPX Directions server.\n"
+"%s"
+msgstr ""
+"Failed to connect to GPX Directions server.\n"
+"%s"
+
+#: ../src/maemo-mapper.c:1969
+msgid "Failed to initialize GConf. Quitting."
+msgstr "Failed to initialize GConf. Quitting."
+
+#: ../src/maemo-mapper.c:1396
+msgid "Failed to initialize GConf. Settings were not saved."
+msgstr "Failed to initialize GConf. Settings were not saved."
+
+#: ../src/maemo-mapper.c:3421
+#, c-format
+msgid ""
+"Failed to open file for %s.\n"
+"%s"
+msgstr ""
+"Failed to open file for %s.\n"
+"%s"
+
+#: ../src/maemo-mapper.c:3774
+#, c-format
+msgid ""
+"Failed to open file for reading.\n"
+"%s"
+msgstr ""
+"Failed to open file for reading.\n"
+"%s"
+
+#: ../src/maemo-mapper.c:4139
+#, c-format
+msgid "Failed to parse string as float: %s\n"
+msgstr "Failed to parse string as float: %s\n"
+
+#: ../src/maemo-mapper.c:4128
+#, c-format
+msgid "Failed to parse string as int: %s\n"
+msgstr "Failed to parse string as int: %s\n"
+
+#: ../src/maemo-mapper.c:2313
+msgid "Full Screen"
+msgstr "Full Screen"
+
+#: ../src/maemo-mapper.c:1644
+msgid "GPS"
+msgstr "GPS"
+
+#: ../src/maemo-mapper.c:5083
+msgid "GPS Location"
+msgstr "GPS Location"
+
+#: ../src/maemo-mapper.c:4356
+msgid "GSV"
+msgstr "GSV"
+
+#: ../src/maemo-mapper.c:2336
+msgid "Help"
+msgstr "Help"
+
+#: ../src/maemo-mapper.c:5220
+msgid "Invalid Bottom-Right Latitude"
+msgstr "Invalid Bottom-Right Latitude"
+
+#: ../src/maemo-mapper.c:5227
+msgid "Invalid Bottom-Right Longitude"
+msgstr "Invalid Bottom-Right Longitude"
+
+#: ../src/maemo-mapper.c:4130 ../src/maemo-mapper.c:4141
+msgid "Invalid NMEA input from receiver!"
+msgstr "Invalid NMEA input from receiver!"
+
+#: ../src/maemo-mapper.c:5206
+msgid "Invalid Top-Left Latitude"
+msgstr "Invalid Top-Left Latitude"
+
+#: ../src/maemo-mapper.c:5213
+msgid "Invalid Top-Left Longitude"
+msgstr "Invalid Top-Left Longitude"
+
+#: ../src/maemo-mapper.c:1813
+msgid "Keep Display On Only in Fullscreen Mode"
+msgstr "Keep Display On Only in Fullscreen Mode"
+
+#: ../src/maemo-mapper.c:2295
+msgid "Lat/Lon"
+msgstr "Lat/Lon"
+
+#: ../src/maemo-mapper.c:5073
+msgid "Latitude"
+msgstr "Latitude"
+
+#: ../src/maemo-mapper.c:2301
+msgid "Lead"
+msgstr "Lead"
+
+#: ../src/maemo-mapper.c:1733
+msgid "Lead Amount"
+msgstr "Lead Amount"
+
+#: ../src/maemo-mapper.c:1801
+msgid "Line Width"
+msgstr "Line Width"
+
+#: ../src/maemo-mapper.c:5077
+msgid "Longitude"
+msgstr "Longitude"
+
+#: ../src/maemo-mapper.c:1648
+msgid "MAC"
+msgstr "MAC"
+
+#: ../src/maemo-mapper.c:3634
+msgid "Maemo Mapper"
+msgstr "Maemo Mapper"
+
+#: ../src/maemo-mapper.c:1632
+msgid "Maemo Mapper Settings"
+msgstr "Maemo Mapper Settings"
+
+#: ../src/maemo-mapper.c:1676 ../src/maemo-mapper.c:2257
+msgid "Maps"
+msgstr "Maps"
+
+#: ../src/maemo-mapper.c:2252
+msgid "Mark a Waypoint"
+msgstr "Mark a Waypoint"
+
+#: ../src/maemo-mapper.c:1797
+msgid "Misc."
+msgstr "Misc."
+
+#: ../src/maemo-mapper.c:1880
+msgid ""
+"No GPS Receiver MAC Provided.\n"
+"GPS Disabled."
+msgstr ""
+"No GPS Receiver MAC Provided.\n"
+"GPS Disabled."
+
+#: ../src/maemo-mapper.c:2307
+msgid "None"
+msgstr "None"
+
+#: ../src/maemo-mapper.c:1667
+msgid "Note: \"Channel\" refers to the device side!"
+msgstr "Note: \"Channel\" refers to the device side!"
+
+#: ../src/maemo-mapper.c:2232 ../src/maemo-mapper.c:2248
+msgid "Open..."
+msgstr "Open..."
+
+#: ../src/maemo-mapper.c:4447
+msgid "Origin"
+msgstr "Origin"
+
+#: ../src/maemo-mapper.c:1786
+msgid "Pitch"
+msgstr "Pitch"
+
+#: ../src/maemo-mapper.c:4489
+msgid "Please specify a start location."
+msgstr "Please specify a start location."
+
+#: ../src/maemo-mapper.c:4496
+msgid "Please specify an end location."
+msgstr "Please specify an end location."
+
+#: ../src/maemo-mapper.c:4353
+msgid "RMC"
+msgstr "RMC"
+
+#: ../src/maemo-mapper.c:2238
+msgid "Reset"
+msgstr "Reset"
+
+#: ../src/maemo-mapper.c:2228 ../src/maemo-mapper.c:2276
+msgid "Route"
+msgstr "Route"
+
+#: ../src/maemo-mapper.c:4570
+msgid "Route Downloaded"
+msgstr "Route Downloaded"
+
+#: ../src/maemo-mapper.c:3783 ../src/maemo-mapper.c:4608
+msgid "Route Opened"
+msgstr "Route Opened"
+
+#: ../src/maemo-mapper.c:4820
+msgid "Route Saved"
+msgstr "Route Saved"
+
+#: ../src/maemo-mapper.c:4889
+msgid "Routes are now hidden"
+msgstr "Routes are now hidden"
+
+#: ../src/maemo-mapper.c:4882
+msgid "Routes are now shown"
+msgstr "Routes are now shown"
+
+#: ../src/maemo-mapper.c:2236 ../src/maemo-mapper.c:2250
+msgid "Save..."
+msgstr "Save..."
+
+#: ../src/maemo-mapper.c:1830
+msgid "Scanning for bluetooth devices"
+msgstr "Scanning for bluetooth devices"
+
+#: ../src/maemo-mapper.c:732
+msgid "Searching for GPS receiver"
+msgstr "Searching for GPS receiver"
+
+#: ../src/maemo-mapper.c:1148
+#, c-format
+msgid "Sending to flite: %s\n"
+msgstr "Sending to flite: %s\n"
+
+#: ../src/maemo-mapper.c:1722
+msgid "Sensitivity"
+msgstr "Sensitivity"
+
+#: ../src/maemo-mapper.c:821
+#, c-format
+msgid "Setting _next_way to NULL\n"
+msgstr "Setting _next_way to NULL\n"
+
+#: ../src/maemo-mapper.c:2325
+msgid "Settings..."
+msgstr "Settings..."
+
+#: ../src/maemo-mapper.c:2272
+msgid "Show"
+msgstr "Show"
+
+#: ../src/maemo-mapper.c:1774
+msgid "Speed"
+msgstr "Speed"
+
+#: ../src/maemo-mapper.c:5118
+msgid "Top-Left"
+msgstr "Top-Left"
+
+#: ../src/maemo-mapper.c:2244 ../src/maemo-mapper.c:2281
+msgid "Track"
+msgstr "Track"
+
+#: ../src/maemo-mapper.c:4659
+msgid "Track Opened"
+msgstr "Track Opened"
+
+#: ../src/maemo-mapper.c:4767
+msgid "Track Saved"
+msgstr "Track Saved"
+
+#: ../src/maemo-mapper.c:4787
+msgid "Track Waypoint"
+msgstr "Track Waypoint"
+
+#: ../src/maemo-mapper.c:4863
+msgid "Tracks are now hidden"
+msgstr "Tracks are now hidden"
+
+#: ../src/maemo-mapper.c:4856
+msgid "Tracks are now shown"
+msgstr "Tracks are now shown"
+
+#: ../src/maemo-mapper.c:1680
+msgid "URI Format"
+msgstr "URI Format"
+
+#: ../src/maemo-mapper.c:4437
+msgid "Use GPS Location"
+msgstr "Use GPS Location"
+
+#: ../src/maemo-mapper.c:2286
+msgid "Velocity Vector"
+msgstr "Velocity Vector"
+
+#: ../src/maemo-mapper.c:5099
+msgid "View Center"
+msgstr "View Center"
+
+#: ../src/maemo-mapper.c:5147
+msgid "Zoom"
+msgstr "Zoom"
+
+#: ../src/maemo-mapper.c:5150
+msgid "Zoom Levels to Download: (0 -> most detail)"
+msgstr "Zoom Levels to Download: (0 -> most detail)"
+
+#: ../src/maemo-mapper.c:1690
+msgid "Zoom Steps"
+msgstr "Zoom Steps"
+
/*
* This file is part of maemo-mapper
*
- * Copyright (C) 2006 John Costigan
+ * Copyright (C) 2006 John Costigan.
*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
*
- * This software is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or(at your option)any later version.
- *
- * This software is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
*
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
+
#define _GNU_SOURCE
+#define _(String) gettext(String)
+
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <gdk/gdkkeysyms.h>
#include <libosso.h>
+#include <osso-helplib.h>
#include <hildon-widgets/hildon-program.h>
#include <hildon-widgets/hildon-controlbar.h>
#include <hildon-widgets/hildon-note.h>
#include <hildon-widgets/hildon-file-chooser-dialog.h>
#include <hildon-widgets/hildon-number-editor.h>
#include <hildon-widgets/hildon-banner.h>
+#include <hildon-widgets/hildon-system-sound.h>
#include <libgnomevfs/gnome-vfs.h>
#include <gconf/gconf-client.h>
#include <libxml/parser.h>
+#include <libintl.h>
+#include <locale.h>
+
/* BELOW: for getting input from the GPS receiver. */
#include <sys/socket.h>
#include <bluetooth/bluetooth.h>
/* Pans are done two "grids" at a time, or 64 pixels. */
#define PAN_UNITS (grid2unit(2))
-#define GCONF_KEY_PREFIX "/apps/maemo-mapper"
+#define GCONF_KEY_PREFIX "/apps/maemo/maemo-mapper"
#define GCONF_KEY_RCVR_MAC GCONF_KEY_PREFIX"/receiver_mac"
#define GCONF_KEY_RCVR_CHAN GCONF_KEY_PREFIX"/receiver_channel"
#define GCONF_KEY_MAP_URI_FORMAT GCONF_KEY_PREFIX"/map_uri_format"
#define GCONF_KEY_ANNOUNCE_NOTICE GCONF_KEY_PREFIX"/announce_notice"
#define GCONF_KEY_DRAW_LINE_WIDTH GCONF_KEY_PREFIX"/draw_line_width"
#define GCONF_KEY_ENABLE_VOICE GCONF_KEY_PREFIX"/enable_voice"
-#define GCONF_KEY_VOICE_SYNTH_PATH GCONF_KEY_PREFIX"/voice_synth_path"
+#define GCONF_KEY_VOICE_SPEED GCONF_KEY_PREFIX"/voice_speed"
+#define GCONF_KEY_VOICE_PITCH GCONF_KEY_PREFIX"/voice_pitch"
#define GCONF_KEY_ALWAYS_KEEP_ON \
GCONF_KEY_PREFIX"/always_keep_on"
#define GCONF_KEY_AUTOCENTER_MODE GCONF_KEY_PREFIX"/autocenter_mode"
#define GCONF_KEY_ROUTE_LOCATIONS GCONF_KEY_PREFIX"/route_locations"
+#define HELP_ID_PREFIX "help_maemomapper_"
+#define HELP_ID_INTRO HELP_ID_PREFIX"intro"
+
#define MACRO_RECALC_CENTER(center_unitx, center_unity) { \
switch(_center_mode) \
{ \
static GtkWidget *_menu_fullscreen_item = NULL;
static GtkWidget *_menu_enable_gps_item = NULL;
static GtkWidget *_menu_settings_item = NULL;
+static GtkWidget *_menu_help_item = NULL;
static GtkWidget *_menu_close_item = NULL;
/** BANNERS. */
static guint _draw_line_width = 5;
static guint _announce_notice_ratio = 6;
static gboolean _enable_voice = TRUE;
-static gchar *_voice_synth_path = NULL;
static gboolean _always_keep_on = FALSE;
+static gdouble _voice_speed = 1.0;
+static gint _voice_pitch = 0;
static GSList *_loc_list;
static GtkListStore *_loc_model;
static gboolean
menu_cb_settings(GtkAction *action);
+static gboolean
+menu_cb_help(GtkAction *action);
+
static gint
map_download_cb_async(GnomeVFSAsyncHandle *handle,
GnomeVFSXferProgressInfo *info, ProgressUpdateInfo *pui);
}
if(!_connect_banner)
_connect_banner = hildon_banner_show_animation(
- _window, NULL, "Searching for GPS receiver");
+ _window, NULL, _("Searching for GPS receiver"));
break;
case RCVR_UP:
if(_connect_banner)
}
if(!_fix_banner)
_fix_banner = hildon_banner_show_progress(
- _window, NULL, "Establishing GPS fix");
+ _window, NULL, _("Establishing GPS fix"));
break;
default: ; /* to quell warning. */
}
{
if(_enable_voice && strcmp(_next_way->desc, _last_spoken_phrase))
{
- gchar *buffer;
g_free(_last_spoken_phrase);
_last_spoken_phrase = g_strdup(_next_way->desc);
- if(!fork())
- {
- /* We are the fork child. Synthesize the voice. */
- buffer = g_strdup_printf(
- "Approaching Waypoint. %s",
- _last_spoken_phrase);
- printf("%s %s\n", _voice_synth_path, buffer);
- execl(_voice_synth_path, _voice_synth_path,
- "-t", buffer, (char *)NULL);
- printf("DONE!\n");
- g_free(buffer);
- exit(0);
- }
+ printf("Sending to flite: %s\n", _last_spoken_phrase);
+ hildon_play_system_sound(
+ "/usr/share/sounds/ui-information_note.wav");
+ osso_rpc_async_run(_osso,
+ "com.nokia.flite",
+ "/com/nokia/flite",
+ "com.nokia.flite",
+ "flite_tts",
+ NULL,
+ NULL,
+ DBUS_TYPE_UINT32,
+ getpid(),
+ DBUS_TYPE_STRING,
+ _last_spoken_phrase,
+ DBUS_TYPE_UINT32,
+ 18,
+ DBUS_TYPE_DOUBLE,
+ _voice_speed,
+ DBUS_TYPE_DOUBLE,
+ _voice_pitch,
+ DBUS_TYPE_STRING,
+ g_strdup("cmu_us_kal"),
+ DBUS_TYPE_INVALID);
}
hildon_banner_show_information(_window, NULL, _next_way->desc);
}
if(!gconf_client)
{
- fprintf(stderr, "Failed to initialize GConf. Aborting.\n");
+ popup_error(_("Failed to initialize GConf. Settings were not saved."));
return;
}
gconf_client_set_bool(gconf_client,
GCONF_KEY_ENABLE_VOICE, _enable_voice, NULL);
- /* Save Voice Synthesis Path flag. */
- gconf_client_set_string(gconf_client,
- GCONF_KEY_VOICE_SYNTH_PATH, _voice_synth_path, NULL);
-
/* Save Keep On When Fullscreen flag. */
gconf_client_set_bool(gconf_client,
GCONF_KEY_ALWAYS_KEEP_ON, _always_keep_on, NULL);
return TRUE;
}
+typedef struct _BrowseInfo BrowseInfo;
+struct _BrowseInfo {
+ GtkWidget *dialog;
+ GtkWidget *txt_map_dir_name;
+};
+
+static gboolean
+settings_dialog_browse(GtkWidget *widget, BrowseInfo *browse_info)
+{
+ GtkWidget *dialog;
+ printf("%s()\n", __PRETTY_FUNCTION__);
+
+ dialog = GTK_WIDGET(
+ hildon_file_chooser_dialog_new(GTK_WINDOW(browse_info->dialog),
+ GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER));
+
+ gtk_file_chooser_set_local_only(GTK_FILE_CHOOSER(dialog), TRUE);
+ gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog),
+ gtk_entry_get_text(GTK_ENTRY(browse_info->txt_map_dir_name)));
+
+ if(GTK_RESPONSE_OK == gtk_dialog_run(GTK_DIALOG(dialog)))
+ {
+ gchar *filename = gtk_file_chooser_get_filename(
+ GTK_FILE_CHOOSER(dialog));
+ gtk_entry_set_text(GTK_ENTRY(browse_info->txt_map_dir_name), filename);
+ g_free(filename);
+ }
+
+ gtk_widget_destroy(dialog);
+
+ vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
+ return TRUE;
+}
+
/**
* Bring up the Settings dialog. Return TRUE if and only if the recever
* information has changed (MAC or channel).
GtkWidget *dialog;
GtkWidget *notebook;
GtkWidget *table;
+ GtkWidget *hbox;
+ GtkWidget *hbox2;
GtkWidget *label;
GtkWidget *txt_rcvr_mac;
GtkWidget *num_rcvr_chan;
GtkWidget *num_lead_ratio;
GtkWidget *num_announce_notice;
GtkWidget *chk_enable_voice;
- GtkWidget *txt_voice_synth_path;
+ GtkWidget *num_voice_speed;
+ GtkWidget *num_voice_pitch;
GtkWidget *num_draw_line_width;
GtkWidget *chk_always_keep_on;
+ GtkWidget *btn_browse;
ScanInfo scan_info = {0, 0};
+ BrowseInfo browse_info = {0, 0};
gboolean rcvr_changed = FALSE;
gint scan_sid = 0;
printf("%s()\n", __PRETTY_FUNCTION__);
- dialog = gtk_dialog_new_with_buttons("Maemo Mapper Settings",
+ dialog = gtk_dialog_new_with_buttons(_("Maemo Mapper Settings"),
GTK_WINDOW(_window), GTK_DIALOG_MODAL,
GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,
GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT,
/* Receiver page. */
gtk_notebook_append_page(GTK_NOTEBOOK(notebook),
table = gtk_table_new(2, 3, FALSE),
- label = gtk_label_new("GPS"));
+ label = gtk_label_new(_("GPS")));
/* Receiver MAC Address. */
gtk_table_attach(GTK_TABLE(table),
- label = gtk_label_new("MAC"),
+ label = gtk_label_new(_("MAC")),
0, 1, 0, 1, GTK_FILL, 0, 2, 4);
gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f);
gtk_table_attach(GTK_TABLE(table),
/* Receiver Channel. */
gtk_table_attach(GTK_TABLE(table),
- label = gtk_label_new("Channel"),
+ label = gtk_label_new(_("Channel")),
0, 1, 1, 2, GTK_FILL, 0, 2, 4);
gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f);
gtk_table_attach(GTK_TABLE(table),
/* Note!. */
gtk_table_attach(GTK_TABLE(table),
label = gtk_label_new(
- "Note: \"Channel\" refers to the device side!"),
+ _("Note: \"Channel\" refers to the device side!")),
0, 2, 2, 3, GTK_FILL, 0, 2, 4);
gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_CENTER);
gtk_misc_set_alignment(GTK_MISC(label), 0.5f, 0.5f);
/* Maps page. */
gtk_notebook_append_page(GTK_NOTEBOOK(notebook),
table = gtk_table_new(2, 3, FALSE),
- label = gtk_label_new("Maps"));
+ label = gtk_label_new(_("Maps")));
/* Map download URI. */
gtk_table_attach(GTK_TABLE(table),
- label = gtk_label_new("URI Prefix"),
+ label = gtk_label_new(_("URI Format")),
0, 1, 0, 1, GTK_FILL, 0, 2, 4);
gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f);
gtk_table_attach(GTK_TABLE(table),
/* Zoom Steps. */
gtk_table_attach(GTK_TABLE(table),
- label = gtk_label_new("Zoom Steps"),
+ label = gtk_label_new(_("Zoom Steps")),
0, 1, 1, 2, GTK_FILL, 0, 2, 4);
gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f);
gtk_table_attach(GTK_TABLE(table),
/* Map Directory. */
gtk_table_attach(GTK_TABLE(table),
- label = gtk_label_new("Cache Dir."),
+ label = gtk_label_new(_("Cache Dir.")),
0, 1, 2, 3, GTK_FILL, 0, 2, 4);
gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f);
gtk_table_attach(GTK_TABLE(table),
- txt_map_dir_name = gtk_entry_new(),
+ hbox = gtk_hbox_new(FALSE, 4),
1, 2, 2, 3, GTK_EXPAND | GTK_FILL, 0, 2, 4);
- gtk_entry_set_width_chars(GTK_ENTRY(txt_map_dir_name), 30);
+ gtk_box_pack_start(GTK_BOX(hbox),
+ txt_map_dir_name = gtk_entry_new(),
+ TRUE, TRUE, 0);
+ gtk_box_pack_start(GTK_BOX(hbox),
+ btn_browse = gtk_button_new_with_label(_("Browse...")),
+ FALSE, FALSE, 0);
/* Auto-Center page. */
gtk_notebook_append_page(GTK_NOTEBOOK(notebook),
table = gtk_table_new(2, 2, FALSE),
- label = gtk_label_new("Auto-Center"));
+ label = gtk_label_new(_("Auto-Center")));
/* Auto-Center Sensitivity. */
gtk_table_attach(GTK_TABLE(table),
- label = gtk_label_new("Sensitivity"),
+ label = gtk_label_new(_("Sensitivity")),
0, 1, 0, 1, GTK_FILL, 0, 2, 4);
gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f);
gtk_table_attach(GTK_TABLE(table),
/* Lead Amount. */
gtk_table_attach(GTK_TABLE(table),
- label = gtk_label_new("Lead Amount"),
+ label = gtk_label_new(_("Lead Amount")),
0, 1, 1, 2, GTK_FILL, 0, 2, 4);
gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f);
gtk_table_attach(GTK_TABLE(table),
/* Announcement. */
gtk_notebook_append_page(GTK_NOTEBOOK(notebook),
table = gtk_table_new(2, 3, FALSE),
- label = gtk_label_new("Announce"));
+ label = gtk_label_new(_("Announce")));
/* Announcement Advance Notice. */
gtk_table_attach(GTK_TABLE(table),
- label = gtk_label_new("Advance Notice"),
+ label = gtk_label_new(_("Advance Notice")),
0, 1, 0, 1, GTK_FILL, 0, 2, 4);
gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f);
gtk_table_attach(GTK_TABLE(table),
/* Enable Voice. */
gtk_table_attach(GTK_TABLE(table),
chk_enable_voice = gtk_check_button_new_with_label(
- "Enable Voice Synthesis (requires flite)"),
+ _("Enable Voice Synthesis (requires flite)")),
0, 2, 1, 2, GTK_EXPAND | GTK_FILL, 0, 2, 4);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(chk_enable_voice),
_enable_voice);
- /* Voice Synthesis Path. */
- gtk_table_attach(GTK_TABLE(table),
- label = gtk_label_new("Voice Synth Path"),
- 0, 1, 2, 3, GTK_FILL, 0, 2, 4);
- gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f);
+ /* Voice Speed and Pitch. */
gtk_table_attach(GTK_TABLE(table),
- txt_voice_synth_path = gtk_entry_new(),
- 1, 2, 2, 3, GTK_EXPAND | GTK_FILL, 0, 2, 4);
- gtk_entry_set_width_chars(GTK_ENTRY(txt_voice_synth_path), 30);
+ hbox = gtk_hbox_new(FALSE, 12),
+ 0, 2, 2, 3, 0, 0, 2, 6);
+ gtk_box_pack_start(GTK_BOX(hbox),
+ hbox2 = gtk_hbox_new(FALSE, 4),
+ TRUE, TRUE, 4);
+ gtk_box_pack_start(GTK_BOX(hbox2),
+ label = gtk_label_new(_("Speed")),
+ TRUE, TRUE, 0);
+ gtk_box_pack_start(GTK_BOX(hbox2),
+ num_voice_speed = hildon_controlbar_new(),
+ TRUE, TRUE, 0);
+ hildon_controlbar_set_range(HILDON_CONTROLBAR(num_voice_speed), 1, 10);
+ force_min_visible_bars(HILDON_CONTROLBAR(num_voice_speed), 1);
+
+ gtk_box_pack_start(GTK_BOX(hbox),
+ hbox2 = gtk_hbox_new(FALSE, 4),
+ TRUE, TRUE, 4);
+ gtk_box_pack_start(GTK_BOX(hbox2),
+ label = gtk_label_new(_("Pitch")),
+ TRUE, TRUE, 0);
+ gtk_box_pack_start(GTK_BOX(hbox2),
+ num_voice_pitch = hildon_controlbar_new(),
+ TRUE, TRUE, 0);
+ hildon_controlbar_set_range(HILDON_CONTROLBAR(num_voice_pitch), -2, 8);
+ force_min_visible_bars(HILDON_CONTROLBAR(num_voice_pitch), 1);
/* Misc. page. */
gtk_notebook_append_page(GTK_NOTEBOOK(notebook),
table = gtk_table_new(2, 2, FALSE),
- label = gtk_label_new("Misc."));
+ label = gtk_label_new(_("Misc.")));
/* Line Width. */
gtk_table_attach(GTK_TABLE(table),
- label = gtk_label_new("Line Width"),
+ label = gtk_label_new(_("Line Width")),
0, 1, 0, 1, GTK_FILL, 0, 2, 4);
gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f);
gtk_table_attach(GTK_TABLE(table),
/* Keep Display On Only When Fullscreen. */
gtk_table_attach(GTK_TABLE(table),
chk_always_keep_on = gtk_check_button_new_with_label(
- "Keep Display On Only in Fullscreen Mode"),
+ _("Keep Display On Only in Fullscreen Mode")),
0, 2, 1, 2, GTK_EXPAND | GTK_FILL, 0, 2, 4);
+ /* Connect signals. */
+ browse_info.dialog = dialog;
+ browse_info.txt_map_dir_name = txt_map_dir_name;
+ g_signal_connect(G_OBJECT(btn_browse), "clicked",
+ G_CALLBACK(settings_dialog_browse), &browse_info);
+
/* Initialize fields. */
if(_rcvr_mac)
gtk_entry_set_text(GTK_ENTRY(txt_rcvr_mac), _rcvr_mac);
scan_info.txt_rcvr_mac = txt_rcvr_mac;
scan_info.scan_banner
= hildon_banner_show_animation(dialog, NULL,
- "Scanning for bluetooth devices");
+ _("Scanning for bluetooth devices"));
scan_sid = gtk_idle_add((GSourceFunc)scan_bluetooth, &scan_info);
}
hildon_number_editor_set_value(HILDON_NUMBER_EDITOR(num_rcvr_chan),
_lead_ratio);
hildon_controlbar_set_value(HILDON_CONTROLBAR(num_announce_notice),
_announce_notice_ratio);
- gtk_entry_set_text(GTK_ENTRY(txt_voice_synth_path), _voice_synth_path);
+ hildon_controlbar_set_value(HILDON_CONTROLBAR(num_voice_speed),
+ (gint)(_voice_speed * 3 + 0.5));
+ hildon_controlbar_set_value(HILDON_CONTROLBAR(num_voice_pitch),
+ _voice_pitch);
hildon_controlbar_set_value(HILDON_CONTROLBAR(num_draw_line_width),
_draw_line_width);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(chk_always_keep_on),
if(!config_set_map_dir_name(gnome_vfs_expand_initial_tilde(
gtk_entry_get_text(GTK_ENTRY(txt_map_dir_name)))))
{
- popup_error("Could not create Map Cache directory.");
+ popup_error(_("Could not create Map Cache directory."));
continue;
}
{
gtk_check_menu_item_set_active(
GTK_CHECK_MENU_ITEM(_menu_enable_gps_item), FALSE);
- popup_error("No GPS Receiver MAC Provided.\n"
- "GPS Disabled.");
+ popup_error(_("No GPS Receiver MAC Provided.\n"
+ "GPS Disabled."));
rcvr_changed = TRUE;
}
}
_announce_notice_ratio = hildon_controlbar_get_value(
HILDON_CONTROLBAR(num_announce_notice));
+ _voice_speed = hildon_controlbar_get_value(
+ HILDON_CONTROLBAR(num_voice_speed)) / 3.0;
+
+ _voice_pitch = hildon_controlbar_get_value(
+ HILDON_CONTROLBAR(num_voice_pitch));
+
_enable_voice = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(chk_enable_voice));
- g_free(_voice_synth_path);
- _voice_synth_path = g_strdup(gtk_entry_get_text(
- GTK_ENTRY(txt_voice_synth_path)));
-
update_gcs();
config_save();
if(!gconf_client)
{
- fprintf(stderr, "Failed to initialize GConf. Aborting.\n");
+ popup_error(_("Failed to initialize GConf. Quitting."));
exit(1);
}
tmp = g_strdup("~/apps/maemo-mapper");
if(!config_set_map_dir_name(gnome_vfs_expand_initial_tilde(tmp)))
{
- popup_error("Could not create Map Cache directory.\n"
+ popup_error(_("Could not create Map Cache directory.\n"
"Please set a valid Map Cache directory in the Settings"
- " dialog box.");
+ " dialog box."));
}
g_free(tmp);
}
else
_enable_voice = TRUE;
- /* Get Voice Synthesis Path. Default is /usr/bin/flite. */
- _voice_synth_path = gconf_client_get_string(gconf_client,
- GCONF_KEY_VOICE_SYNTH_PATH, NULL);
- if(!_voice_synth_path)
- _voice_synth_path = g_strdup("/usr/bin/flite");
+ /* Get Voice Speed - Default is 1.0. */
+ value = gconf_client_get(gconf_client, GCONF_KEY_VOICE_SPEED, NULL);
+ if(value)
+ {
+ _voice_speed = gconf_value_get_float(value);
+ gconf_value_free(value);
+ }
+ else
+ _voice_speed = 1.0;
+
+ /* Get Voice Speed - Default is 0. */
+ value = gconf_client_get(gconf_client, GCONF_KEY_VOICE_PITCH, NULL);
+ if(value)
+ {
+ _voice_pitch = gconf_value_get_int(value);
+ gconf_value_free(value);
+ }
+ else
+ _voice_pitch = 3;
/* Get Always Keep On flag. Default is FALSE. */
_always_keep_on = gconf_client_get_bool(gconf_client,
/* The "Routes" submenu. */
gtk_menu_append(main_menu, menu_item
- = gtk_menu_item_new_with_label("Route"));
+ = gtk_menu_item_new_with_label(_("Route")));
gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item),
submenu = gtk_menu_new());
gtk_menu_append(submenu, _menu_route_open_item
- = gtk_menu_item_new_with_label("Open..."));
+ = gtk_menu_item_new_with_label(_("Open...")));
gtk_menu_append(submenu, _menu_route_download_item
- = gtk_menu_item_new_with_label("Download..."));
+ = gtk_menu_item_new_with_label(_("Download...")));
gtk_menu_append(submenu, _menu_route_save_item
- = gtk_menu_item_new_with_label("Save..."));
+ = gtk_menu_item_new_with_label(_("Save...")));
gtk_menu_append(submenu, _menu_route_reset_item
- = gtk_menu_item_new_with_label("Reset"));
+ = gtk_menu_item_new_with_label(_("Reset")));
gtk_menu_append(submenu, _menu_route_clear_item
- = gtk_menu_item_new_with_label("Clear"));
+ = gtk_menu_item_new_with_label(_("Clear")));
/* The "Track" submenu. */
gtk_menu_append(main_menu, menu_item
- = gtk_menu_item_new_with_label("Track"));
+ = gtk_menu_item_new_with_label(_("Track")));
gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item),
submenu = gtk_menu_new());
gtk_menu_append(submenu, _menu_track_open_item
- = gtk_menu_item_new_with_label("Open..."));
+ = gtk_menu_item_new_with_label(_("Open...")));
gtk_menu_append(submenu, _menu_track_save_item
- = gtk_menu_item_new_with_label("Save..."));
+ = gtk_menu_item_new_with_label(_("Save...")));
gtk_menu_append(submenu, _menu_track_mark_way_item
- = gtk_menu_item_new_with_label("Mark a Waypoint"));
+ = gtk_menu_item_new_with_label(_("Mark a Waypoint")));
gtk_menu_append(submenu, _menu_track_clear_item
- = gtk_menu_item_new_with_label("Clear"));
+ = gtk_menu_item_new_with_label(_("Clear")));
gtk_menu_append(main_menu, menu_item
- = gtk_menu_item_new_with_label("Maps"));
+ = gtk_menu_item_new_with_label(_("Maps")));
gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item),
submenu = gtk_menu_new());
gtk_menu_append(submenu, _menu_maps_dlroute_item
- = gtk_menu_item_new_with_label("Download Along Route"));
+ = gtk_menu_item_new_with_label(_("Download Along Route")));
gtk_menu_append(submenu, _menu_maps_dlarea_item
- = gtk_menu_item_new_with_label("Download Area..."));
+ = gtk_menu_item_new_with_label(_("Download Area...")));
gtk_menu_append(submenu, _menu_auto_download_item
- = gtk_check_menu_item_new_with_label("Auto-Download"));
+ = gtk_check_menu_item_new_with_label(_("Auto-Download")));
gtk_check_menu_item_set_active(
GTK_CHECK_MENU_ITEM(_menu_auto_download_item), _auto_download);
gtk_menu_append(main_menu, gtk_separator_menu_item_new());
gtk_menu_append(main_menu, menu_item
- = gtk_menu_item_new_with_label("Show"));
+ = gtk_menu_item_new_with_label(_("Show")));
gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item),
submenu = gtk_menu_new());
gtk_menu_append(submenu, _menu_show_routes_item
- = gtk_check_menu_item_new_with_label("Route"));
+ = gtk_check_menu_item_new_with_label(_("Route")));
gtk_check_menu_item_set_active(
GTK_CHECK_MENU_ITEM(_menu_show_routes_item),
_show_tracks & ROUTES_MASK);
gtk_menu_append(submenu, _menu_show_tracks_item
- = gtk_check_menu_item_new_with_label("Track"));
+ = gtk_check_menu_item_new_with_label(_("Track")));
gtk_check_menu_item_set_active(
GTK_CHECK_MENU_ITEM(_menu_show_tracks_item),
_show_tracks & TRACKS_MASK);
gtk_menu_append(submenu, _menu_show_velvec_item
- = gtk_check_menu_item_new_with_label("Velocity Vector"));
+ = gtk_check_menu_item_new_with_label(_("Velocity Vector")));
gtk_check_menu_item_set_active(
GTK_CHECK_MENU_ITEM(_menu_show_velvec_item), _show_velvec);
gtk_menu_append(main_menu, menu_item
- = gtk_menu_item_new_with_label("Auto-Center"));
+ = gtk_menu_item_new_with_label(_("Auto-Center")));
gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item),
submenu = gtk_menu_new());
gtk_menu_append(submenu, _menu_ac_latlon_item
- = gtk_radio_menu_item_new_with_label(NULL, "Lat/Lon"));
+ = gtk_radio_menu_item_new_with_label(NULL, _("Lat/Lon")));
gtk_check_menu_item_set_active(
GTK_CHECK_MENU_ITEM(_menu_ac_latlon_item),
_center_mode == CENTER_LATLON);
gtk_menu_append(submenu, _menu_ac_lead_item
= gtk_radio_menu_item_new_with_label_from_widget(
- GTK_RADIO_MENU_ITEM(_menu_ac_latlon_item), "Lead"));
+ GTK_RADIO_MENU_ITEM(_menu_ac_latlon_item), _("Lead")));
gtk_check_menu_item_set_active(
GTK_CHECK_MENU_ITEM(_menu_ac_lead_item),
_center_mode == CENTER_LEAD);
gtk_menu_append(submenu, _menu_ac_none_item
= gtk_radio_menu_item_new_with_label_from_widget(
- GTK_RADIO_MENU_ITEM(_menu_ac_latlon_item), "None"));
+ GTK_RADIO_MENU_ITEM(_menu_ac_latlon_item), _("None")));
gtk_check_menu_item_set_active(
GTK_CHECK_MENU_ITEM(_menu_ac_none_item),
_center_mode < 0);
gtk_menu_append(main_menu, _menu_fullscreen_item
- = gtk_check_menu_item_new_with_label("Full Screen"));
+ = gtk_check_menu_item_new_with_label(_("Full Screen")));
gtk_check_menu_item_set_active(
GTK_CHECK_MENU_ITEM(_menu_fullscreen_item), _fullscreen);
gtk_menu_append(main_menu, _menu_enable_gps_item
- = gtk_check_menu_item_new_with_label("Enable GPS"));
+ = gtk_check_menu_item_new_with_label(_("Enable GPS")));
gtk_check_menu_item_set_active(
GTK_CHECK_MENU_ITEM(_menu_enable_gps_item), _enable_gps);
gtk_menu_append(main_menu, gtk_separator_menu_item_new());
gtk_menu_append(main_menu, _menu_settings_item
- = gtk_menu_item_new_with_label("Settings..."));
+ = gtk_menu_item_new_with_label(_("Settings...")));
gtk_menu_append(main_menu, gtk_separator_menu_item_new());
+ gtk_menu_append(main_menu, _menu_help_item
+ = gtk_menu_item_new_with_label(_("Help")));
+
gtk_menu_append(main_menu, _menu_close_item
- = gtk_menu_item_new_with_label("Close"));
+ = gtk_menu_item_new_with_label(_("Close")));
/* We need to show menu items. */
gtk_widget_show_all(GTK_WIDGET(main_menu));
G_CALLBACK(menu_cb_auto_download), NULL);
g_signal_connect(G_OBJECT(_menu_settings_item), "activate",
G_CALLBACK(menu_cb_settings), NULL);
+ g_signal_connect(G_OBJECT(_menu_help_item), "activate",
+ G_CALLBACK(menu_cb_help), NULL);
g_signal_connect(G_OBJECT(_menu_close_item), "activate",
G_CALLBACK(gtk_main_quit), NULL);
g_hash_table_insert(_downloads_hash, pui, pui);
if(!_num_downloads++ && !_download_banner)
_download_banner = hildon_banner_show_progress(
- _window, NULL, "Downloading maps");
+ _window, NULL, _("Downloading maps"));
vprintf("%s(): return\n", __PRETTY_FUNCTION__);
return TRUE;
GNOME_VFS_OPEN_WRITE, FALSE, 0664))))
{
gchar buffer[1024];
- sprintf(buffer, "Failed to open file for %s.\n%s",
+ sprintf(buffer, _("Failed to open file for %s.\n%s"),
chooser_action == GTK_FILE_CHOOSER_ACTION_OPEN
- ? "reading" : "writing",
+ ? _("reading") : _("writing"),
gnome_vfs_result_to_string(vfs_result));
popup_error(buffer);
}
file_uri, &size, &buffer)))
{
gchar buffer[1024];
- sprintf(buffer, "Failed to open file for reading.\n%s",
+ sprintf(buffer, _("Failed to open file for reading.\n%s"),
gnome_vfs_result_to_string(vfs_result));
popup_error(buffer);
}
{
/* If auto is enabled, append the route, otherwise replace it. */
if(parse_gpx(buffer, size, &_route, 0, 0))
- hildon_banner_show_information(_window, NULL, "Route Opened");
+ hildon_banner_show_information(
+ _window, NULL, _("Route Opened"));
else
- popup_error("Error parsing GPX file.");
+ popup_error(_("Error parsing GPX file."));
g_free(buffer);
}
g_free(file_uri);
g_thread_init(NULL);
/* Initialize _osso. */
- _osso = osso_initialize("maemo_mapper", VERSION, TRUE, NULL);
+ _osso = osso_initialize("com.gnuite.maemo_mapper", VERSION, TRUE, NULL);
if(!_osso)
{
fprintf(stderr, "osso_initialize failed.\n");
(tofill) = strtol((str), &error_check, 10); \
if(error_check == (str)) \
{ \
- fprintf(stderr, "Failed to parse string as int: %s\n", str); \
+ fprintf(stderr, _("Failed to parse string as int: %s\n"), str); \
hildon_banner_show_information(_window, NULL, \
- "Invalid NMEA input from receiver!"); \
+ _("Invalid NMEA input from receiver!")); \
return; \
} \
}
(tofill) = g_ascii_strtod((str), &error_check); \
if(error_check == (str)) \
{ \
- fprintf(stderr, "Failed to parse string as float: %s\n", str); \
+ fprintf(stderr, _("Failed to parse string as float: %s\n"), str); \
hildon_banner_show_information(_window, NULL, \
- "Invalid NMEA input from receiver!"); \
+ _("Invalid NMEA input from receiver!")); \
return; \
} \
}
gint size;
printf("%s()\n", __PRETTY_FUNCTION__);
- dialog = gtk_dialog_new_with_buttons("Download Route",
+ dialog = gtk_dialog_new_with_buttons(_("Download Route"),
GTK_WINDOW(_window), GTK_DIALOG_MODAL,
GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,
GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT,
0, 2, 0, 1, 0, 0, 2, 4);
gtk_box_pack_start(GTK_BOX(hbox),
chk_gps = gtk_check_button_new_with_label(
- "Use GPS Location"),
+ _("Use GPS Location")),
TRUE, TRUE, 0);
gtk_box_pack_start(GTK_BOX(hbox),
chk_auto = gtk_check_button_new_with_label(
- "Auto-Update"),
+ _("Auto-Update")),
TRUE, TRUE, 0);
gtk_widget_set_sensitive(chk_auto, FALSE);
/* Origin. */
gtk_table_attach(GTK_TABLE(table),
- label = gtk_label_new("Origin"),
+ label = gtk_label_new(_("Origin")),
0, 1, 1, 2, GTK_FILL, 0, 2, 4);
gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f);
gtk_table_attach(GTK_TABLE(table),
/* Destination. */
gtk_table_attach(GTK_TABLE(table),
- label = gtk_label_new("Destination"),
+ label = gtk_label_new(_("Destination")),
0, 1, 2, 3, GTK_FILL, 0, 2, 4);
gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f);
gtk_table_attach(GTK_TABLE(table),
gtk_entry_set_completion(GTK_ENTRY(txt_to), to_comp);
gtk_entry_set_width_chars(GTK_ENTRY(txt_to), 25);
- g_signal_connect(G_OBJECT(chk_gps), "toggled",
+ g_signal_connect(G_OBJECT(chk_gps), _("toggled"),
G_CALLBACK(gps_toggled_from), txt_from);
- g_signal_connect(G_OBJECT(chk_gps), "toggled",
+ g_signal_connect(G_OBJECT(chk_gps), _("toggled"),
G_CALLBACK(gps_toggled_auto), chk_auto);
/* Initialize fields. */
from = gtk_entry_get_text(GTK_ENTRY(txt_from));
if(!strlen(from))
{
- popup_error("Please specify a start location.");
+ popup_error(_("Please specify a start location."));
continue;
}
to = gtk_entry_get_text(GTK_ENTRY(txt_to));
if(!strlen(to))
{
- popup_error("Please specify an end location.");
+ popup_error(_("Please specify an end location."));
continue;
}
buffer, &size, &bytes)))
{
gchar buffer[1024];
- sprintf(buffer, "Failed to connect to GPX Directions server.\n%s",
+ sprintf(buffer,_("Failed to connect to GPX Directions server.\n%s"),
gnome_vfs_result_to_string(vfs_result));
popup_error(buffer);
}
else if(strncmp(bytes, "<?xml", strlen("<?xml")))
{
/* Not an XML document - must be bad locations. */
- popup_error("Could not generate directions. Make sure your "
- "locations are valid.");
+ popup_error(_("Could not generate directions. Make sure your "
+ "locations are valid."));
g_free(bytes);
bytes = NULL;
}
}
hildon_banner_show_information(_window, NULL,
- "Route Downloaded");
+ _("Route Downloaded"));
+ g_free(bytes);
}
else
- popup_error("Error parsing GPX file.");
- g_free(bytes);
+ {
+ popup_error(_("Error parsing GPX file."));
+ g_free(bytes);
+ bytes = NULL; /* Let them try again. */
+ }
}
}
map_force_redraw();
hildon_banner_show_information(_window, NULL,
- "Route Opened");
+ _("Route Opened"));
}
else
- popup_error("Error parsing GPX file.");
+ popup_error(_("Error parsing GPX file."));
g_free(buffer);
}
if(parse_gpx(buffer, size, &_track, -1, ARRAY_CHUNK_SIZE))
{
map_force_redraw();
- hildon_banner_show_information(_window, NULL, "Track Opened");
+ hildon_banner_show_information(_window, NULL, _("Track Opened"));
}
else
- popup_error("Error parsing GPX file.");
+ popup_error(_("Error parsing GPX file."));
g_free(buffer);
}
handle, (string), strlen((string)), &size))) \
{ \
gchar buffer[1024]; \
- sprintf(buffer, "Error while writing to file:\n%s\n" \
- "File is incomplete.", \
+ sprintf(buffer, _("Error while writing to file:\n%s\n" \
+ "File is incomplete."), \
gnome_vfs_result_to_string(vfs_result)); \
popup_error(buffer); \
return FALSE; \
GTK_FILE_CHOOSER_ACTION_SAVE))
{
if(write_gpx(handle, &_track))
- hildon_banner_show_information(_window, NULL, "Track Saved");
+ hildon_banner_show_information(_window, NULL, _("Track Saved"));
else
- popup_error("Error writing GPX file.");
+ popup_error(_("Error writing GPX file."));
gnome_vfs_close(handle);
}
{
guint x1, y1;
_track.wtail->point = _track.tail;
- _track.wtail->desc = g_strdup("Track Waypoint");
+ _track.wtail->desc = g_strdup(_("Track Waypoint"));
/** Instead of calling map_render_tracks(), we'll just add the waypoint
* ourselves. */
GTK_FILE_CHOOSER_ACTION_SAVE))
{
if(write_gpx(handle, &_route))
- hildon_banner_show_information(_window, NULL, "Route Saved");
+ hildon_banner_show_information(_window, NULL, _("Route Saved"));
else
- popup_error("Error writing GPX file.");
+ popup_error(_("Error writing GPX file."));
gnome_vfs_close(handle);
}
_show_tracks |= TRACKS_MASK;
map_render_tracks();
MACRO_QUEUE_DRAW_AREA();
- hildon_banner_show_information(_window, NULL, "Tracks are now shown");
+ hildon_banner_show_information(
+ _window, NULL, _("Tracks are now shown"));
}
else
{
_show_tracks &= ~TRACKS_MASK;
map_force_redraw();
- hildon_banner_show_information(_window, NULL, "Tracks are now hidden");
+ hildon_banner_show_information(
+ _window, NULL, _("Tracks are now hidden"));
}
vprintf("%s(): return\n", __PRETTY_FUNCTION__);
_show_tracks |= ROUTES_MASK;
map_render_tracks();
MACRO_QUEUE_DRAW_AREA();
- hildon_banner_show_information(_window, NULL, "Routes are now shown");
+ hildon_banner_show_information(
+ _window, NULL, _("Routes are now shown"));
}
else
{
_show_tracks &= ~ROUTES_MASK;
map_force_redraw();
- hildon_banner_show_information(_window, NULL, "Routes are now hidden");
+ hildon_banner_show_information(
+ _window, NULL, "Routes are now hidden");
}
vprintf("%s(): return\n", __PRETTY_FUNCTION__);
printf("%s()\n", __PRETTY_FUNCTION__);
_center_mode = CENTER_LEAD;
- hildon_banner_show_information(_window, NULL, "Auto-Center Mode: Lead");
+ hildon_banner_show_information(_window, NULL, _("Auto-Center Mode: Lead"));
MACRO_RECALC_CENTER(new_center_unitx, new_center_unity);
map_center_unit(new_center_unitx, new_center_unity);
printf("%s()\n", __PRETTY_FUNCTION__);
_center_mode = CENTER_LATLON;
- hildon_banner_show_information(_window, NULL, "Auto-Center Mode: Lat/Lon");
+ hildon_banner_show_information(_window, NULL, _("Auto-Center Mode: Lat/Lon"));
MACRO_RECALC_CENTER(new_center_unitx, new_center_unity);
map_center_unit(new_center_unitx, new_center_unity);
printf("%s()\n", __PRETTY_FUNCTION__);
_center_mode = -_center_mode;
- hildon_banner_show_information(_window, NULL, "Auto-Center Off");
+ hildon_banner_show_information(_window, NULL, _("Auto-Center Off"));
vprintf("%s(): return\n", __PRETTY_FUNCTION__);
return TRUE;
guint i;
printf("%s()\n", __PRETTY_FUNCTION__);
- dialog = gtk_dialog_new_with_buttons("Download Maps by Area",
+ dialog = gtk_dialog_new_with_buttons(_("Download Maps by Area"),
GTK_WINDOW(_window), GTK_DIALOG_MODAL,
GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,
- GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT,
NULL);
gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->action_area),
- button = gtk_button_new_with_label("Clear"));
-
+ button = gtk_button_new_with_label(_("Clear")));
g_signal_connect(G_OBJECT(button), "clicked",
G_CALLBACK(dlarea_clear), &dlarea_info);
+ gtk_dialog_add_button(GTK_DIALOG(dialog),
+ GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT);
+
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox),
dlarea_info.notebook = gtk_notebook_new(), TRUE, TRUE, 0);
gtk_notebook_append_page(GTK_NOTEBOOK(dlarea_info.notebook),
table = gtk_table_new(2, 3, FALSE),
- label = gtk_label_new("Area"));
+ label = gtk_label_new(_("Area")));
/* Clear button and Label Columns. */
gtk_table_attach(GTK_TABLE(table),
- label = gtk_label_new("Latitude"),
+ label = gtk_label_new(_("Latitude")),
1, 2, 0, 1, GTK_FILL, 0, 4, 0);
gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f);
gtk_table_attach(GTK_TABLE(table),
- label = gtk_label_new("Longitude"),
+ label = gtk_label_new(_("Longitude")),
2, 3, 0, 1, GTK_FILL, 0, 4, 0);
gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f);
/* GPS. */
gtk_table_attach(GTK_TABLE(table),
- label = gtk_label_new("GPS Location"),
+ label = gtk_label_new(_("GPS Location")),
0, 1, 1, 2, GTK_FILL, 0, 4, 0);
gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f);
gtk_table_attach(GTK_TABLE(table),
/* Center. */
gtk_table_attach(GTK_TABLE(table),
- label = gtk_label_new("View Center"),
+ label = gtk_label_new(_("View Center")),
0, 1, 2, 3, GTK_FILL, 0, 4, 0);
gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f);
gtk_table_attach(GTK_TABLE(table),
/* Top Left. */
gtk_table_attach(GTK_TABLE(table),
- label = gtk_label_new("Top-Left"),
+ label = gtk_label_new(_("Top-Left")),
0, 1, 3, 4, GTK_FILL, 0, 4, 0);
gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f);
gtk_table_attach(GTK_TABLE(table),
/* Bottom Right. */
gtk_table_attach(GTK_TABLE(table),
- label = gtk_label_new("Bottom-Right"),
+ label = gtk_label_new(_("Bottom-Right")),
0, 1, 4, 5, GTK_FILL, 0, 4, 0);
gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f);
gtk_table_attach(GTK_TABLE(table),
gtk_notebook_append_page(GTK_NOTEBOOK(dlarea_info.notebook),
table = gtk_table_new(5, 5, FALSE),
- label = gtk_label_new("Zoom"));
+ label = gtk_label_new(_("Zoom")));
gtk_table_attach(GTK_TABLE(table),
label = gtk_label_new(
- "Zoom Levels to Download: (0 -> most detail)"),
+ _("Zoom Levels to Download: (0 -> most detail)")),
0, 5, 0, 1, GTK_FILL, 0, 4, 0);
gtk_misc_set_alignment(GTK_MISC(label), 0.f, 0.5f);
for(i = 0; i < MAX_ZOOM; i++)
text = gtk_entry_get_text(GTK_ENTRY(dlarea_info.txt_topleft_lat));
start_lat = strtof(text, &error_check);
if(text == error_check) {
- popup_error("Invalid Top-Left Latitude");
+ popup_error(_("Invalid Top-Left Latitude"));
continue;
}
text = gtk_entry_get_text(GTK_ENTRY(dlarea_info.txt_topleft_lon));
start_lon = strtof(text, &error_check);
if(text == error_check) {
- popup_error("Invalid Top-Left Longitude");
+ popup_error(_("Invalid Top-Left Longitude"));
continue;
}
text = gtk_entry_get_text(GTK_ENTRY(dlarea_info.txt_botright_lat));
end_lat = strtof(text, &error_check);
if(text == error_check) {
- popup_error("Invalid Bottom-Right Latitude");
+ popup_error(_("Invalid Bottom-Right Latitude"));
continue;
}
text = gtk_entry_get_text(GTK_ENTRY(dlarea_info.txt_botright_lon));
end_lon = strtof(text, &error_check);
if(text == error_check) {
- popup_error("Invalid Bottom-Right Longitude");
+ popup_error(_("Invalid Bottom-Right Longitude"));
continue;
}
}
text = gtk_entry_get_text(GTK_ENTRY(dlarea_info.txt_topleft_lat));
- sprintf(buffer, "Confirm download of %d maps\n(up to about %.2f MB)\n",
+ sprintf(buffer,
+ _("Confirm download of %d maps\n(up to about %.2f MB)\n"),
num_maps,
num_maps * (strstr(_map_uri_format, "%s") ? 18e-3 : 6e-3));
text = gtk_entry_get_text(GTK_ENTRY(dlarea_info.txt_topleft_lat));
}
else
{
- popup_error("Cannot enable GPS until a GPS Receiver MAC "
- "is set in the Settings dialog box.");
+ popup_error(_("Cannot enable GPS until a GPS Receiver MAC "
+ "is set in the Settings dialog box."));
gtk_check_menu_item_set_active(
GTK_CHECK_MENU_ITEM(_menu_enable_gps_item), FALSE);
}
return TRUE;
}
+static gboolean
+menu_cb_help(GtkAction *action)
+{
+ printf("%s()\n", __PRETTY_FUNCTION__);
+
+ printf("ossohelp_show(%s): %d\n", HELP_ID_INTRO,
+ ossohelp_show(_osso, HELP_ID_INTRO, OSSO_HELP_SHOW_DIALOG));
+ printf("%d = OSSO_ERROR\n", OSSO_ERROR);
+ printf("%d = OSSO_RPC_ERROR\n", OSSO_RPC_ERROR);
+ printf("%d = OSSO_INVALID\n", OSSO_INVALID);
+
+ vprintf("%s(): return\n", __PRETTY_FUNCTION__);
+ return TRUE;
+}
+
static gboolean
map_download_idle_refresh(ProgressUpdateInfo *pui)
{