{"action":"created","issue":{"url":"https://api.github.com/repos/nvaccess/nvda/issues/5489","labels_url":"https://api.github.com/repos/nvaccess/nvda/issues/5489/labels{/name}","comments_url":"https://api.github.com/repos/nvaccess/nvda/issues/5489/comments","events_url":"https://api.github.com/repos/nvaccess/nvda/issues/5489/events","html_url":"https://github.com/nvaccess/nvda/pull/5489","id":116759035,"number":5489,"title":"Make it easier for add-ons to supply custom braille tables","user":{"login":"dkager","id":3109617,"avatar_url":"https://avatars.githubusercontent.com/u/3109617?v=3","gravatar_id":"","url":"https://api.github.com/users/dkager","html_url":"https://github.com/dkager","followers_url":"https://api.github.com/users/dkager/followers","following_url":"https://api.github.com/users/dkager/following{/other_user}","gists_url":"https://api.github.com/users/dkager/gists{/gist_id}","starred_url":"https://api.github.com/users/dkager/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dkager/subscriptions","organizations_url":"https://api.github.com/users/dkager/orgs","repos_url":"https://api.github.com/users/dkager/repos","events_url":"https://api.github.com/users/dkager/events{/privacy}","received_events_url":"https://api.github.com/users/dkager/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":8,"created_at":"2015-11-13T12:23:19Z","updated_at":"2015-12-07T06:19:38Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/nvaccess/nvda/pulls/5489","html_url":"https://github.com/nvaccess/nvda/pull/5489","diff_url":"https://github.com/nvaccess/nvda/pull/5489.diff","patch_url":"https://github.com/nvaccess/nvda/pull/5489.patch"},"body":"Related issue: #3304\r\n\r\n* Make braille.TABLES a list so add-on code can append to it.\r\n* Detect if a table is one of the stock tables or a custom table based on its path.\r\n* Fall back to the US 8-dot computer braille table if a table can't be found, both for custom tables and stock tables.\r\n* In the GUI, show an error if a table is selected that can't be found. This is also logged.\r\n* In the GUI, sort translation and input tables alphabetically."},"comment":{"url":"https://api.github.com/repos/nvaccess/nvda/issues/comments/162421471","html_url":"https://github.com/nvaccess/nvda/pull/5489#issuecomment-162421471","issue_url":"https://api.github.com/repos/nvaccess/nvda/issues/5489","id":162421471,"user":{"login":"dkager","id":3109617,"avatar_url":"https://avatars.githubusercontent.com/u/3109617?v=3","gravatar_id":"","url":"https://api.github.com/users/dkager","html_url":"https://github.com/dkager","followers_url":"https://api.github.com/users/dkager/followers","following_url":"https://api.github.com/users/dkager/following{/other_user}","gists_url":"https://api.github.com/users/dkager/gists{/gist_id}","starred_url":"https://api.github.com/users/dkager/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dkager/subscriptions","organizations_url":"https://api.github.com/users/dkager/orgs","repos_url":"https://api.github.com/users/dkager/repos","events_url":"https://api.github.com/users/dkager/events{/privacy}","received_events_url":"https://api.github.com/users/dkager/received_events","type":"User","site_admin":false},"created_at":"2015-12-07T06:19:38Z","updated_at":"2015-12-07T06:19:38Z","body":"I’ll do more extensive testing with the current liblouis and the t3304 branch later today to see what does and what doesn’t work. We should probably also add lou_setDataPath to the Python wrapper if that proves to be the easiest and most portable solution. I now also recall that liblouis looked in some hard-coded path, I believe “liblouis/tables”, which doesn’t work for NVDA since it uses “louis/tables”.\n\n \n\nFrom: James Teh [mailto:notifications@github.com] \nSent: Monday, December 07, 2015 07:03\nTo: nvaccess/nvda <nvda@noreply.github.com>\nCc: Davy Kager <mail@davykager.nl>\nSubject: Re: [nvda] Make it easier for add-ons to supply custom braille tables (#5489)\n\n \n\nGood point. This table should also have extension uti (uncontracted), not cti (contracted). Many tables don't follow these semantics very well. The question is if this is important enough to suggest renaming the table upstream, e.g. to unicode-braille.uti.\n\nI don't think it's worth it. I've made this point in the past and no one seems to care. If we do it now, we'd probably end up renaming 90% of the tables directory. :)\n\nRegarding mixing absolute and relative paths:\nI discussed this with the liblouis guys. I'm not sure about the particulars anymore, but I believe that subtables are also tried against the distribution directory\n\nThe problem is that the distribution directory isn't relevant here. It will change across instances of NVDA, so we don't/can't set it.\n\nMy tests were consistent with this, but we definitely need to clear it up before using this code.\n\nInteresting that your tests seem to work. I wonder how it's finding the correct tables. That suggests it doesn't ignore the path if specified in subsequent tables. Did inclusion of dist tables work from custom tables?\n\nYou can set the search path, though not from Python, with lou_setDataPath.\n\nIn the end, this may be the simplest solution. That wasn't available when I originally wrote this code.\n\nOne remaining issue: occasionally when changing translation tables I get an access violation error from liblouis. I can't think of anything in this patch that would cause that, other than a buggy Python wrapper for liblouis.\n\nMore likely a bug in liblouis itself, since the wrapper just calls liblouis functions.\n\n—\nReply to this email directly or view it on GitHub <https://github.com/nvaccess/nvda/pull/5489#issuecomment-162418696> .  <https://github.com/notifications/beacon/AC9y8dLrzX6UVt4JLTYwZainqVbwUVI_ks5pNRikgaJpZM4Ghypq.gif> \n\n"}}