Andy2
647443c03e
reintroduce BroadcastReceiver listening for connectivity going up and
...
down. When network's down, return -1 from send proc so that comms
timing can retry. This works on both cellphone on carrier network
(with airplane mode as the test for loss/gain of network) and on
emulator (with death/restart of relay as the test since I don't know
how to kill the iface itself). A quick test on phone using wifi this
morning suggested it didn't work, that into/out of airplane mode did
not result in notifications getting set. Need to test that, and back
this out if can't be fixed since I can't break wifi.
2010-12-15 18:39:25 -08:00
Eric House
a663b2deae
Merge branch 'android_branch' of ssh://xwords.git.sourceforge.net/gitroot/xwords/xwords into android_branch
2010-12-13 22:08:11 -08:00
Eric House
442b3983cf
highlight during draw where possible because doing it after isn't
...
possible with wide chars -- meaning I haven't figured out how yet.
ncurses documentation is well hidden....
2010-12-13 22:07:25 -08:00
Andy2
d1605c4493
fix: convert to utf8 and replace grep that didn't work (presuambly
...
because ranges have different meanings in utf-8) with one that does.
2010-12-13 20:39:04 -08:00
Andy2
d78584fddf
remove obsolete, pre-utf8 files
2010-12-13 20:09:26 -08:00
Andy2
bb0a79914b
add conversion from ISO88591 since the default dict's in that format.
2010-12-13 20:09:09 -08:00
Andy2
dc807c948a
use sed instead of tr since as with Slovak a letter was getting
...
dropped. Same one in fact.
2010-12-13 19:58:37 -08:00
Andy2
cd3ff71efb
notify comms layer when unable to establish connection. This allows
...
comms logic to retry and fixes failure on device to detect when
network comes up after being down when game was opened.
2010-12-13 18:30:22 -08:00
Andy2
299c84bb2b
use sed rather than tr to uppercase letters. tr was dropping the Á
...
letter for some reason. The sed feature I'm using is a gnu extension
but has the advantage of working. Should probably do this for all
languages and in the info files.
2010-12-13 18:16:22 -08:00
Andy2
23a4a7ef64
get rid of unused/stubbed out method
2010-12-13 06:37:26 -08:00
Eric House
2807ee2ce0
Merge branch 'android_branch' of ssh://xwords.git.sourceforge.net/gitroot/xwords/xwords into android_branch
2010-12-12 20:50:35 -08:00
Eric House
894afdc0cb
take words up to 15 letters long. This makes no difference with any
...
dict I've tried as there just aren't any words over 7 letters long
made up of only a-f.
2010-12-12 20:02:28 -08:00
Eric House
e8e0b25fad
go back to old dict -- correcting a change I didn't mean to check in.
2010-12-12 20:01:33 -08:00
eehouse@eehouse.org
9140c8b39a
Merge branch 'android_branch' of ssh://xwords.git.sourceforge.net/gitroot/xwords/xwords into android_branch
2010-12-10 05:43:31 -08:00
Eric House
9c5b2c9f4f
add for current French list
2010-12-09 21:22:37 -08:00
Eric House
98456dd652
fix to build dicts, wince/android format by default
2010-12-09 21:22:14 -08:00
Eric House
6b58c9031f
script to build html page for downloading dicts
2010-12-09 21:21:41 -08:00
Andy2
183d920eb0
update changelog for beta 20
2010-12-09 07:41:43 -08:00
Andy2
1fbdd62372
up version num/strings
2010-12-09 07:21:56 -08:00
Andy2
c4fa9cb707
exit loop rather than trying to use key again after cancelling it.
...
Fixes CancelledKeyException raised when launching networked game in
airplane mode.
2010-12-09 06:58:55 -08:00
Andy2
d5d81fea5b
don't return dialog when msgID is 0. This should fix occasional crash
...
where OS wants to restore a dialog but the message ID has gotten
cleared -- via a mechanism I'm not quite clear on.
2010-12-08 18:52:08 -08:00
Andy2
a1c96b5601
change default dict download url so new set can coexist with old and
...
get picked up only by new release that can handle it.
2010-12-08 18:47:21 -08:00
Andy2
65ea075102
when downloading new dict inval the info cache to it'll get reloaded
...
-- in case we're overwriting one with the same name.
2010-12-08 18:46:25 -08:00
Andy2
1b40d1d47b
make method public to be used outside
2010-12-08 18:45:31 -08:00
Andy2
5534939407
add inval() to prevent stale data when new dict downloaded over top of
...
old.
2010-12-08 18:44:59 -08:00
Andy2
c83e4cc7a3
all places where dict lang is displayed can also display word count
2010-12-08 05:51:26 -08:00
eehouse@eehouse.org
64bcb8bb2b
Revert "replace call to rand() with android_only function that reads two bytes"
...
This reverts commit 1653b9f6e9
.
2010-12-08 05:38:41 -08:00
Eric House
efe6d6d95d
Merge branch 'android_branch' of ssh://xwords.git.sourceforge.net/gitroot/xwords/xwords into android_branch
2010-12-07 20:47:19 -08:00
Eric House
b65338b643
script for use on relay host
2010-12-07 20:46:02 -08:00
Andy2
3987749079
log calls to set-not-again. I'm getting crashes and that may help
...
track it down. Remove this later.
2010-12-07 18:57:38 -08:00
Andy2
4a12f7a96f
Revert "in attempt to work around non-random rand() in jni world, call back"
...
This reverts commit 99c92e779d
.
Conflicts:
xwords4/android/XWords4/jni/utilwrapper.c
2010-12-07 18:43:53 -08:00
eehouse@eehouse.org
57bfe4c943
Revert "switch from nio to regular old io, with separate reader and writer"
...
This reverts commit b23de9a958
.
2010-12-07 18:12:35 -08:00
eehouse@eehouse.org
b389478350
Revert "register for notification of network going up and down; start using"
...
This reverts commit 77fe3952da
.
2010-12-07 18:12:02 -08:00
Eric House
eb22322e8d
change title until we have column headers
2010-12-06 21:08:38 -08:00
Eric House
2a0151baf7
add BasEnglish dictionary.
2010-12-06 21:08:15 -08:00
Eric House
4ac4b37619
Merge remote branch 'maidu/android_branch' into dawg_fixup
2010-12-06 21:05:41 -08:00
Andy2
77fe3952da
register for notification of network going up and down; start using
...
that information to connect and not. There seems to be no way to get
notified when a socket's underlying transport goes down (might not
even want to) so this will be the best way to have the arrows go red
when the device goes into airplane mode.
2010-12-06 20:19:17 -08:00
eehouse@eehouse.org
fcd179f6b7
Merge remote branch 'origin/android_branch' into dawg_fixup
2010-12-06 18:50:13 -08:00
Andy2
39b40a9a3d
build with a header giving word count
2010-12-06 18:31:12 -08:00
Andy2
74fc103e9d
opt for the long form of annotated name (includes word count)
2010-12-06 18:28:00 -08:00
Andy2
ad829b74f7
cache DictInfo rather than just lang code; add method that formats
...
name with lang and count. Ideally the dict display would be a table,
but it's not trivial to switch from a list to scrolling table.
2010-12-06 18:27:00 -08:00
Andy2
f50e6b3f1b
turn dict_getLangCode into dict_getInfo, adding a struct that contains
...
lang code and new word count.
2010-12-06 18:25:23 -08:00
Andy2
e4999acc98
add dict_getWordCount()
2010-12-06 18:24:31 -08:00
Andy2
ff9e03ef4b
read rather than just skipping word count
2010-12-06 07:30:28 -08:00
Andy2
91c04d3267
switch to new format (with header giving word count)
2010-12-06 07:26:47 -08:00
Andy2
12508b7cd5
cleanup stderr output
2010-12-06 07:23:22 -08:00
Andy2
0072112b5a
fix syntax for including newheader so only one gets included. Fixes
...
bug building multiple dicts where headers would accumulate.
2010-12-06 07:23:05 -08:00
Andy2
e2bb50ef62
skip new header if present
2010-12-06 07:22:07 -08:00
Eric House
c4cdc24b78
initial changes to add a header to xwd format so that stuff like
...
number of words can be included. Changed to build dicts and linux to
open them. Android still needs to learn. Also, some of the tools in
dawg/ need to be fixed to read old-format (pre-utf8) .xwd files.
2010-12-05 19:33:10 -08:00
Eric House
eff2324950
fix compile command
2010-12-05 19:30:00 -08:00
Eric House
bef1e125bf
ignore .pdb files
2010-12-05 19:29:15 -08:00
Andy2
b23de9a958
switch from nio to regular old io, with separate reader and writer
...
threads. Greatly simplifies things, but only tested for the simplest
case, and I know it won't correctly reconnect when relay goes down.
But folks recommend against nio, and I'd like to see if I'll get
notifications in the form of blocking socket calls returning or
raising exceptions when the network goes down, something that isn't
happenening with nio.
2010-12-03 18:48:14 -08:00
Andy2
fda21e8d15
save room and player names if leaving simple config dialog via the
...
advanced config button (but still drop if back button hit.)
2010-12-03 06:44:34 -08:00
Andy2
426f990156
fix infinite loop creating networked game: util_rand() can't call into
...
java in some cases so needs to fall back to returning rand().
2010-12-03 06:43:40 -08:00
eehouse@eehouse.org
ddaa368af3
Merge branch 'android_branch' of ssh://xwords.git.sourceforge.net/gitroot/xwords/xwords into android_branch
2010-12-02 22:38:16 -08:00
Andy2
984a5d6154
Fix yet again what shouldn't have been checked in.
2010-12-02 22:37:21 -08:00
Eric House
9fd4229384
pass host to rq too
2010-12-02 22:34:59 -08:00
Eric House
328fe7d6dc
Merge branch 'android_branch' of ssh://xwords.git.sourceforge.net/gitroot/xwords/xwords into android_branch
2010-12-02 22:31:34 -08:00
Eric House
d1244da284
script encapsulating sql query that's useful to run (with 'watch') along with discon_ok2.sh
2010-12-02 22:29:36 -08:00
Andy2
99c92e779d
in attempt to work around non-random rand() in jni world, call back
...
into the java world by making it a util_ctxt function. Do same on
linux to test. We'll see how it is -- and can back this commit out if
there's no improvement.
2010-12-02 19:02:36 -08:00
eehouse@eehouse.org
c4a4a39438
Merge branch 'android_branch' of ssh://xwords.git.sourceforge.net/gitroot/xwords/xwords into android_branch
2010-12-02 05:56:26 -08:00
Eric House
ae9dbd1e5c
create mtimes array rather than mtimes timestamp
2010-12-01 21:09:25 -08:00
Eric House
4bd5553596
track mtime per host rather than per game -- make it an array in the db.
2010-12-01 21:08:22 -08:00
Andy2
2e956e2f6e
debug is not supposed to be checked in turned on
2010-12-01 18:13:55 -08:00
Andy2
e89feb62d8
second part of manual merge of unicode_branch's dawg/ directory into
...
this one. This adds the directories and their files created inside
dawg.
2010-11-30 18:38:05 -08:00
Andy2
79990bc7b1
first set of changes formed by applyinig diff of android_branch's
...
dawg/ directory against unicode_branch's. The two branches seem to
have to common ancestor -- probably didn't survive translation from
svn -- so this is the best I can do.
This checkin is all the files that were modified by the patch plus a
couple of simple additions. Next I'll be adding directories that the
patch created. It also reintroduced a bunch of .cvsignore files; I
won't check those in.
2010-11-30 18:35:11 -08:00
Andy2
78be732c64
use min of score ht and cell width for network status icon. Fixes
...
problem on 600x800 devices where the icon overlaps the board.
2010-11-30 18:21:28 -08:00
Andy2
a5c36f37a4
new strings for dict substitution
2010-11-30 06:37:23 -08:00
Andy2
d086dad34e
Since you can't add/remove buttons in onCreateDialog(), add a new one
...
to use when there are other dicts available in the same langauge as
the missing one that offers to substitute, and another dialog
presenting a list of same-language dicts. Then substitute the one
tapped.
2010-11-30 06:37:01 -08:00
Andy2
3a9eb72db3
add static methods to count and list dicts in a given langauge.
2010-11-30 06:34:57 -08:00
Andy2
1653b9f6e9
replace call to rand() with android_only function that reads two bytes
...
from /dev/urandom. rand() has been returning pretty crappy numbers
resulting in lots of clustering of tiles in trays. Let's see if this
is any better.
2010-11-29 17:12:12 -08:00
Andy2
b4fb57de9c
move thread inside so it can be started and stopped. And exit the
...
thread on failure to connect, allowing comms' timer to control when we
retry. This fixes problem where would try multiple times/second to
connect when relay was down. Now we try every 15 seconds (per comms,
which can as well back-off), and shortly after the relay comes back up
connect successfully.
2010-11-24 18:14:34 -08:00
Andy2
8623c569e7
move game data from separate files into a BLOB column in the existing
...
summaries db table, using the existing SNAPSHOT column rather than
adding a new one and upping the version. Includes utility fired at
game-start to convert existing games that seems to work. Also
improved a few queries and updates to -- I think -- use the API
better.
2010-11-24 17:22:46 -08:00
Andy2
be35d875b2
move game data from separate files into a BLOB column in the existing
...
summaries db table, using the existing SNAPSHOT column rather than
adding a new one and upping the version. Includes utility fired at
game-start to convert existing games that seems to work. Also
improved a few queries and updates to -- I think -- use the API
better.
2010-11-24 17:22:04 -08:00
Andy2
7c96048ba2
add, but comment out because it requires user permission, code to
...
notice when cellular data becomes available and notify relay of dead
games then. Must be a way to notice a network interface cellular or
not without permission since I already have permission to use it.
2010-11-23 19:01:32 -08:00
Andy2
c3f43dd26c
when deleting all games don't inform relay until after the last one so
...
a single connection does it.
2010-11-23 18:28:05 -08:00
Andy2
5bf87b3bea
add function to invoke rq once for all the relayIDs in the set of
...
devices making up a game. Actually using it make the script fail for
some reason and so it's commented out, but it helped to debug the
relay.
2010-11-23 18:12:11 -08:00
Andy2
0bbf7272aa
don't create thread if there are no obits in the db -- makes it
...
cheaper to call when there may be nothing to do.
2010-11-23 18:10:51 -08:00
Andy2
7c8622392d
send the list of saved deleted relayID/seed pairs off to the relay and
...
remove them from db when relay reports success. TODO: relay always
reports success even if some are malformed and it's aborted parsing.
2010-11-23 17:56:17 -08:00
Andy2
1720fbbd50
fix parsing of relay ids by replacing separating \n with \0.
2010-11-23 17:46:16 -08:00
Andy2
111c59dd30
toward having game deletion get reported even if network isn't live at
...
the moment: create new "obits" table and put dead game info in it.
Change constant for current table name to be less generic.
2010-11-23 06:44:59 -08:00
Andy2
2127394260
don't allow resignations below a certain point -- which happens to fix
...
divide-by-zero error.
2010-11-22 20:44:28 -08:00
Andy2
daecc807c1
don't init nPerDevice, and deal with it not being inited.
2010-11-22 20:43:37 -08:00
Andy2
eebf5f1252
remove the big dictionary. Ideally I'll figure out how to gracefully
...
allow to switch without downloading before the next beta.
2010-11-22 18:24:37 -08:00
Andy2
983906810c
set dropdown view resource on public rooms spinner -- fixes problem
...
where it was drawing super-small.
2010-11-22 07:39:18 -08:00
Andy2
3ee3af8881
init crosshairs correctly so 0th column and row aren't drawn short.
2010-11-22 07:04:51 -08:00
Andy2
edab239060
add one more change
2010-11-21 20:12:45 -08:00
Andy2
ead21206e0
up version to 5 not 6 since prev beta was at 4.
2010-11-21 20:12:34 -08:00
Andy2
7d164f2389
complete list of changes
2010-11-20 21:19:56 -08:00
Andy2
d23dc4aee5
No need to use CurGameInfo for any game summary fields since it's all
...
in the summary db now. Saves opening the game itself just to show it
in a list.
2010-11-20 20:37:01 -08:00
Andy2
985c3d586c
move gameslist summarizing methods from CurGameInfo to GameSummary.
2010-11-20 20:34:41 -08:00
Andy2
b3b9742cdf
add serverrole and players summary to summary db
2010-11-20 20:34:00 -08:00
Andy2
a9a1076d02
actually delete dict when no games use it.
2010-11-19 21:47:38 -08:00
Andy2
b2e418436d
tweak string
2010-11-19 21:09:36 -08:00
Andy2
e38ac33e00
move dict-missing dialog from DlgDelegate into GamesList because
...
that's the only place that is or should be calling it. And since we
can usually figure out the exact url for the dictionary go ahead and
try to download that.
2010-11-19 21:08:09 -08:00
Andy2
0578a0e4f6
When deleting dictionaries, just do it unless the dictionary's in use
...
in which case tell user how many games are using it when asking for
confirmation. To do that, add dict into summary DB, and to do that
add CurGameInfo into GameSummary's constructor. Also, when there's no
summary for a game, make one on the spot and add it to the db. This
will crash if the game's dict has been deleted. Need to deal with
that, probably by deleting unsummarazible games, becuase now if
somebody installs this on top of a device where a game's dict is
missing and it has no summary I'll never boot.
2010-11-19 18:37:00 -08:00
Andy2
586b211b04
add dict name and language to summary database. Probably eventually
...
want to move everything for the display here -- and maybe the file
contents too as a BLOB.
2010-11-19 18:24:56 -08:00
Andy2
71059e6dff
remove nPlayers from game_summarize
2010-11-19 18:23:34 -08:00
Andy2
92940e6638
add model_getNPlayers()
2010-11-19 18:22:39 -08:00
eehouse@eehouse.org
d261aa8184
Merge branch 'android_branch' of ssh://xwords.git.sourceforge.net/gitroot/xwords/xwords into android_branch
2010-11-18 22:42:43 -08:00
Eric House
a1caaeb183
simulate games being deleted before they're finished
2010-11-18 22:27:46 -08:00
Eric House
7a2d279308
add logging so script can better track what state relay game is in
2010-11-18 22:27:06 -08:00
Andy2
43be0183a5
just assert that dict can be opened as part of opening game. GamesList
...
is now responsible for not launching a game if its dict is gone.
2010-11-18 19:05:22 -08:00
Andy2
3eb8b723de
don't assume no-dict dialog should call finish on its calling
...
Activity() on exit -- we're not letting the Activity launch any more.
2010-11-18 19:04:43 -08:00
Andy2
198534dce3
check if dict missing and warn rather than do anything that will crash
...
if it's not there. Ideally I could open the config dialog so user
could change the dict but that isn't working. Maybe just offer to
open it after swapping in the default dict?
2010-11-18 19:00:49 -08:00
Andy2
7921ddca10
don't crash when asked to reset a game whose dict has been deleted.
2010-11-18 18:52:04 -08:00
Andy2
163c124072
update for b19
2010-11-17 06:13:31 -08:00
Andy2
fc88742978
up constants for b19
2010-11-16 21:06:43 -08:00
Eric House
b91187d6a5
test result when parsing; drop if didn't parse
2010-11-16 20:30:43 -08:00
Eric House
f33466b6db
exit with non-0 on failure so calling script/loop can exit too
2010-11-16 20:29:55 -08:00
Eric House
4c6c3c1ded
when marking a device in a dead game, negate its nperdevice entry rather than always using -1.
2010-11-16 20:28:53 -08:00
Andy2
635ae053b6
cut down on printing; don't assert-fail when relay's crashed.
2010-11-15 20:40:59 -08:00
Andy2
2c5c7a0dd1
init m_nRoomsFilled -- not sure when this http view feature broke
2010-11-15 20:08:59 -08:00
Andy2
a1be555910
improve string for deleted remote game -- but really needs a "delete
...
now" button.
2010-11-15 19:02:12 -08:00
Andy2
3b30aff613
use external relayID.sh script
2010-11-15 19:01:38 -08:00
Andy2
ea292c7e2f
exclude dead games when looking for open public rooms
2010-11-15 19:01:11 -08:00
Andy2
58cd93ef6f
given a log file, generates an ID that can be passed with the -d
...
option to relay/rq.
2010-11-15 18:34:56 -08:00
Andy2
c6bd2125a4
java uses '/' to delimit device id, so we'll make that standard.
2010-11-15 18:27:36 -08:00
Andy2
c36679fe13
init isDead to false. Fixes prolem where if DB entry's missing the
...
value is uninitialized and so device gets warned that other device
resigned even if none did.
2010-11-15 18:21:40 -08:00
Andy2
a69e2ad8be
add test for device-gone notification by calling rq after gleaning
...
required params from logs. So far testing only after game is over;
need to test mid-game deletion too.
2010-11-15 06:52:35 -08:00
Andy2
d4e810c9cb
delimiter changed
2010-11-15 06:51:05 -08:00
Andy2
ce5738a4e1
write the count
2010-11-15 06:50:09 -08:00
Andy2
edf0c40904
track isDead when creating SafeCref for devgone
2010-11-15 06:49:41 -08:00
Andy2
2c9f2572a8
use GameFull()
2010-11-15 06:48:57 -08:00
Andy2
feca7345dc
add GameFull -- database, not in-memory state, knows if game is full.
2010-11-15 06:48:36 -08:00
eehouse@eehouse.org
14579c6e30
Merge branch 'relay_proxy' of ssh://xwords.git.sourceforge.net/gitroot/xwords/xwords into relay_proxy
2010-11-14 19:40:35 -08:00
Eric House
528ae0c986
allow more than one device death per message
2010-11-14 15:19:38 -08:00
Eric House
a8ac30b180
add -d option to test dev-gone on relay
2010-11-14 15:18:49 -08:00
Andy2
9026d5c149
remove obsolete script I keep accidentally invoking
2010-11-12 18:26:01 -08:00
Andy2
43896ff187
remove unused method and variable
2010-11-12 18:25:15 -08:00
Andy2
fc8cac3b6a
handle new device-gone message by posting timed-out dialog.
2010-11-11 06:43:36 -08:00
Andy2
b0a4790ce0
respond to new game-gone message by passing to utils.
2010-11-11 06:41:24 -08:00
Andy2
0787a06eb5
accept new message from device announcing the death of a game
...
(including seed so it's harder to spoof); respond to that by setting a
DEAD column in the db and flagging the device as gone. Notify any
connected device of the fact. Refuse to accept new connections to
that game. As already-connected devices reconnect, allow them to do
so but send a new status message that their game is dead. Not heavily
tested yet.
2010-11-11 06:40:50 -08:00
Andy2
3d59bc7e39
add new DEAD column to track when a game's been deleted
2010-11-11 06:29:21 -08:00
Andy2
04e1b0c22b
new constants, include new status event type, for relay to accept
...
notification of deleted game and communicate that to others in the
game as they connect.
2010-11-11 06:26:59 -08:00
Andy2
d809db7b21
plug into delete and reset code to notify relay that game's forever gone.
2010-11-11 06:25:08 -08:00
Andy2
cf84cce41a
define and handle new other-was-deleted error relay is about to start
...
returning.
2010-11-11 06:23:48 -08:00
Andy2
e3f373039a
add informOfDeath to communicate to relay when game is deleted
2010-11-11 06:22:38 -08:00
eehouse@eehouse.org
048eff92b8
Merge branch 'relay_proxy' of /home/andy2/dev/git/LOCAL_ORIGIN into relay_proxy
2010-11-10 07:17:39 -08:00
eehouse@eehouse.org
7929167129
Merge branch 'android_branch' into relay_proxy
2010-11-10 07:06:10 -08:00
Andy2
f373b52d45
fix bug drawing tile letters when drawScaled() got triggered (e.g. for
...
W on non-std-sized screen): pass null as scr rect to drawBitmap so the
whole bitmap gets used.
2010-11-10 07:05:40 -08:00
Andy2
d3e644db83
stop requiring 1.6 sdk when runs fine on 1.5
2010-11-10 06:57:45 -08:00
Andy2
c8d7ca40a5
use \1 instead of \n as delimiter -- in case somebody passes as string
...
containing a \n.
2010-11-09 18:02:22 -08:00
Andy2
0f111ab363
use PQexecParams instead of PQexec for queries involving strings from
...
users (i.e. room names) to avoid crashes when the contain apostrophes
-- and in general to be safer.
2010-11-09 17:27:33 -08:00
Eric House
966616cbc4
throw in the public flags; disallow unset variables
2010-11-09 05:54:23 -08:00
Eric House
2a2f4d4395
been a while since cvs...
2010-11-09 05:53:49 -08:00
Andy2
42481a31cc
add seed to db; get and set it.
2010-11-08 17:23:54 -08:00
Andy2
82876bda06
add seed and fetch it in jni
2010-11-08 17:23:16 -08:00
Andy2
22f7a42c1d
make comms_getChannelSeed non-static so jni can call it
2010-11-08 17:22:38 -08:00
Andy2
b49015c9a1
map out-of-range lang codes to 0. Otherwise we get outOfBounds
...
exceptions once Hex dict is installed.
2010-11-07 15:42:09 -08:00