2
0
mirror of https://github.com/koreader/koreader synced 2024-11-18 03:25:46 +00:00
Commit Graph

150 Commits

Author SHA1 Message Date
mwoz123
0e2b430796
Fix/exit dir (#6163) 2020-05-19 18:21:58 +02:00
poire-z
46221985a6
Delegate "lastfile" management to ReadHistory (#6128)
Simplify (and avoid edge cases) in other code by having
ReadHistory manage the "lastfile" setting on add, remove,
rename...
Fixed a few other cases of things not updated.
2020-05-06 21:11:34 +02:00
poire-z
6dc8bbcc49
Adds ReaderTypography (replaces ReaderHyphenation) (#6072)
Replace Hyphenation menu with Typography menu.
This works mostly like before:
- typography/hyphenation is chosen according to the book
  metadata language,
- one can set a default or a fallback language,
- hyphenation is now just a subset of typography, and
  can be disabled while still setting a language and
  enabling the other features,
- the typography language enables newly added features
  to crengine: per-language line breaking rules and
  per-language Harfbuzz glyph selection.
2020-04-21 21:30:16 +02:00
poire-z
026140f809 Adds ReaderPageMap, to optionally show source pages numbers
bump crengine: support for EPUB3 nav toc and page maps
Includes:
- Fix lvRect:isRectInside(rc) with 0-width or 0-height rect
- TOC: parse EPUB3 nav toc, fallback to spine when no toc
- Parse and cache various hardcopy page list maps
- epub.css: hide EPUB3 <span epub:type="pagebreak"> content
cre.cpp: add a few PageMap helper functions.

Adds ReaderPageMap which will add a new menu (under TOC and
Bookmarks) that will allow:
- to list source page numbers (like a TOC)
- to show visible page labels in the right margin
- to use these source page numbers in the footer, the TOC,
  the GoTo and SkimTo widgets, and to use the source page
  number in the standard bookmark and highlight initial text.
2020-03-27 18:36:48 +01:00
yparitcher
08359ee1b6
[UX] Next/Previous Bookmark Gestures (#5968)
Fixes #5965
2020-03-16 16:52:09 +01:00
poire-z
23d848acf4 Reader: strict ordering of tap & hold gestures (#5789)
The lack of proper overrides could make their
order/precedence/priority non-deterministic.
2020-01-24 20:05:21 +01:00
poire-z
0599c440cc [RTL UI] Bidi-wrap filenames, paths, urls, metadata
bidi.lua:
- Revert "Alias everything to Bidi.nowrap() when in LTR UI,
  as using LTR isolates seems uneeded when already LTR" (part
  of a628714f) which was a wrong assumption: we need proper
  wrappers for all things paths. Enhance some of these wrappers.
- Fix GetText RTL wrapping which was losing empty lines and
  trailing \n.

- Wrap all paths, directories, filenames in the code with
  these wrappers.
- Wrap all book metadata (title, authors...) with BD.auto(),
  as it helps fixing some edge cases (like open/close quotation
  marks which are not considered as bracket types by FriBiDi).
  (Needed some minor logic changes in CoverBrowser.)

- Tweak hyphenation menu text
- Update forgotten SortWidget for UI mirroring
- KoptConfig: update "justification" index for RTL re-ordering,
  following the recent addition of the page_gap_height option.
2020-01-04 01:34:46 +01:00
Robert
371e3336a5 [feat] Favorites: organize book into collections (#5527)
View, add, remove, sort, open book to/from collections.
For now, only one collection named Favorites.
2019-11-06 00:17:28 +01:00
poire-z
04ce1836d8 Avoid double flash when switching or reloading document (#5568) 2019-11-04 16:44:13 +01:00
yparitcher
6c68df42ec [feat] Open unsupported documents as text (#5497) 2019-10-23 23:15:30 +02:00
yparitcher
8ed088159c [Plugin] Per directory defaults (#5428) 2019-10-08 17:14:38 +02:00
Frans de Jonge
f1f6eebce0
[feat] Add MuPDF EPUB/FB2 dynamic font size (#5282)
Closes #4368.
2019-08-30 13:47:51 +02:00
Frans de Jonge
a2dcfe9aec
[doc] Tag @todo, @fixme and @warning (#5244)
This commit standardizes the various todos around the code a bit in a manner recognized by LDoc.

Besides drawing more attention by being displayed in the developer docs, they're also extractable with LDoc on the command line:

```sh
ldoc --tags todo,fixme *.lua
```

However, whether that particular usage offers any advantage over other search tools is questionable at best.

* and some random beautification
2019-08-23 19:53:53 +02:00
Robert
39bf5a4677 [feat] File manager - add option to view unsupported files (#5129)
New option to show all files (also not supported by KOReader) in file manager. Default this option is disabled.
2019-07-20 17:36:41 +02:00
NiLuJe
888d3591b2
Give more control over CRe margins (#4945)
Without having to resort to weird custom defaults.

* Split the current margins setting in three:
  * Horizontal margins (because you generally want those two to be balanced).
  * Top margin & Bottom margin (because you may want to tweak those separately to deal with quirky status bar/final line shenanigans).

* Also, add a "Reclaim bar height from bottom margin" toggle to the status bar menu, to optionally make sure the status bar won't eat into the bottom margin.

* Includes a free fix to diacritics popup refresh handling in the keyboard ;).
2019-05-01 02:09:01 +02:00
Frans de Jonge
8882cdf0c5 [chore] Show FileManager in case of showReaderCoroutine failure
Same as https://github.com/koreader/koreader/pull/2956.

Fixes https://github.com/koreader/koreader/issues/4928.
2019-04-16 22:40:31 -07:00
Frans de Jonge
5ccc3ec352
[UX] Gesture manager: allow folder shortcuts as action in Reader (#4759)
Note that `self.ui:onClose()` properly closes open documents. There might be similar pieces of code around that don't do that.

Fixes #4755.
2019-03-08 21:02:25 +01:00
Frans de Jonge
511570f65d
[fix] ReaderUI Pass self in open with cancel callback (#4751)
I added a call to self in ReaderUI:showFileManager() in #4720, breaking this singular reference that wasn't passing self.

Reported on Gitter by @ptrm, see https://gitter.im/koreader/koreader?at=5c81465725e4e24c072f1a00
2019-03-07 18:04:39 +01:00
Qingping Hou
9e57e56f95 decouple UI definitions from document modules 2019-03-03 13:10:45 +01:00
Frans de Jonge
2ba480b41d
[UX] Gesture manager: add action - file search (#4720)
Also makes it callable from the reader.

Fixes #4717.
2019-03-03 12:43:09 +01:00
Frans de Jonge
9a92792551
[feat, UX] Gesture manager: add option - open previous document (#4641)
Fixes #4333.
2019-02-22 16:29:19 +01:00
poire-z
85ac59ae00 CreDocument: fix document loading interferences (#4349)
When a main document is opened for displaying, some other
document openings (for getting metadata or cover image)
could affect the main document.
Split some code from CreDocument:init() into another new
method CreDocument:setupDefaultView(), that will only be
called by ReaderUI when opening the main document (and not
by these other openings like Book inforation, View cover...)

Also speed up some of these other openings (Search, Screensaver)
by using doc:loadDocument(false) to load only metadata and
avoid parsing the HTML.

Details in https://github.com/koreader/koreader/issues/4346#issuecomment-440036496
2018-11-20 21:07:59 +01:00
Martín Fernández
717184f1d6 move e-ink related settings to a submenu (#4246) 2018-10-10 21:34:47 +02:00
Robert
046a47ff98 Gesture manager - fix (#4251)
* remove comment from buildMenu
* updateFooter in full refresh
2018-10-01 13:00:12 +02:00
Robert
dc5a479b66 Gesture manager (initial) (#4240)
Manager supports separate gestures for the file manager and the reader. Gestures from the manager have a higher priority than built-in gestures.

Settings available in Gear -> Device -> Gesture manager
2018-09-29 23:15:57 +02:00
Robert
225b5d417d Adds ReaderDeviceStatus: low battery alarm (#4144) 2018-08-11 22:47:33 +02:00
poire-z
8c9fe9b589
Allow following links to local files (#4064)
Also use the new ReaderUI:switchDocument(new_file) when
already in ReaderUI in the other cases we switch document.
2018-07-11 18:05:30 +02:00
poire-z
8b3432ae76 Reader menu: adds "Open previous document" (#4056)
* Reader menu: adds "Open previous document"

Allows for quick switching between 2 documents, and keep
symmetry with FileManager menu "Open last document".

* Use "Last:" and "Previous:" when Show filename
2018-07-07 13:03:33 +02:00
poire-z
07713be429
Adds "Better rendering of list items" to Style tweaks (#3968)
Alternate rendering of list items as block elements (instead of
inline/final).
Check the built DOM is still coherent with styles on stylesheet
change, and propose to reload the document if not. Also
invalidate cache on close in that case so a new DOM is built
at next opening.
ReaderStyleTweak: fix tweak css duplication; when globally
enabled, when disabling and re-enabling locally, the css would
be added twice to the final CSS.
Also adds !important to "sub_sup_smaller" tweak, and increase
its priority so it can override "font_size_all_inherit".
Adds CreDocument:getCacheFilePath() for futur features.
2018-05-21 01:19:36 +02:00
Robert
6a98dbaec7
Always close filemanger before open document (#3935)
* Always close filemanger before open document

* rev1
2018-05-20 16:35:53 +02:00
poire-z
5b7664b064
Style tweaks: use css snippets to tweak book styles (#3944)
Adds a new menu "Style tweaks", with a few CSS snippets
that can make some things better with some books.
2018-05-12 23:24:43 +02:00
onde2rock
5aacc761e1 [UX] Implement back_to_exit option (#3838)
Also goes back to File Manager as default view first.
2018-04-09 09:22:16 +02:00
Frans de Jonge
2c1178896c
[feat] Add ReaderBack (#3821)
This implements a reasonable facsimile of going back on Android.

The back button first goes back in a history of visited pages.
When there's no history left, it closes the app.

Fixes #3816.
2018-03-31 21:19:31 +02:00
onde2rock
e502bf04d3 [feat, UX] Support the virtualKeyboard on non touch-device (#3796)
* [VirtualKeyboard] Add support for keynaviguation

Also rename the variable "layout" to "keyboard_layout" because conflict
with the layout from the focusmanager

* Make the goto dialog compatible with key naviguation

My solution is to change the order of the widget. The last one will the
virtualkeybard so it catch all the keybinding, and below it, make the
dialog "is_always_active = true" so it can receive touch event.

* Correctly show the virtual keyboard on dpad devices

* change the order to call the virtualKeyboard so it end up on top

* Handle the multi input dialog

* Support reopening the virtualKeyboard by the Press key

* add check focusmanager

* Fix https://github.com/koreader/koreader/issues/3797

* MultiInputDialog : Now work on non touch-device

* Set the virtualkeyboard to be a modal widget

* Fix the layout in multiinputwidget

* Fix for the various combination of
hasKeys,hasDpad,isTouchDevice

* [Focusmanager] Better handling of malformed layout
2018-03-30 12:46:36 +02:00
Frans de Jonge
65a63d244b
[UX] SDL2: set window title (#3784)
This initial implementation only sets the title for FileManager and ReaderUI.

Fixes #3713.
2018-03-21 20:10:35 +01:00
poire-z
5e47a83e6a
UIManager: avoid painting widgets covered by a full screen widget (#3770)
Navigating the TOC, viewing a full screen image, browsing
reading stats... would call paintTo() on ReaderUI (so, asking
the engine to render the page) or FileManager (so, rendering cover
images) even though their content is hidden.
Widgets registering to UIManager have to explicitely states
they cover the full screen (UIManager can't know, parts of their
dimen may be transparent, e.g. if it is a CenterContainer).
2018-03-17 23:02:32 +01:00
onde2rock
e8aab49ee9 Kindle4NT improvements (#3745)
* [device][kindle4] add fake event to kindle4

* modify focusmanager to allow for more complex layout

The focusmanager now naviguate the layout by avoiding nil value
instead of relying on table lenght. It should be completely backward
compatible

* add Dpad naviguation to the touchmenu

* fix crash because virtualkeyboard on non touch device

the kindle4NT has no keyboard nor touch, the fix open the virtual
keyboard so koreader dont crash but it's not useable

* Enable device with keys to use the touchmenu

* Don't get stuck in reader progress statistics plugin

* [underlinecontainer] Fix and remove unused function

References #1898.
2018-03-14 22:16:38 +01:00
Frans de Jonge
f6ca1c7c0a
[feat] Open with: choose which engine to use for file (#3653)
Fixes #3345

* Add SVG to MuPDF filetypes
2018-02-02 21:21:52 +01:00
poire-z
7797c2369e
credocument: deal with loadDocument() failures (#3570)
cre:loadDocument() may fail in recognizing the document format, and
koreader would previously keep calling other methods on it, which would
make crengine segfaults. We now check loadDocument success at the
various places it is called, and try to deal the best way we can when it fails.
2018-01-03 09:43:49 +01:00
poire-z
29707bd664 FileBrowser: change page to show last file or previous subdir (#3351)
When going from reader to filemanager, we are in the directory
containing the last_file. With this, we will also be on the page
showing this file.
When in filemanager and going up (".."), we will also be on the
page containing the directory we came from.
2017-10-13 18:43:02 +02:00
Frans de Jonge
9eb073a524 [travis] Add protection against unscaled sizes
As pointed out by @poire-z

* [fix, UX] SkimToWidget scaling

* [fix] Button scaling

* [fix, UX] Scale ProgressWidget

* [fix, UX] Scale confirmbox

* [fix, UX] Scale just about everything
2017-09-23 20:24:45 +02:00
poire-z
17014f9281 Avoid settings double save when leaving Reader (#3131) 2017-08-25 18:55:44 +02:00
Frans de Jonge
c8ab9183aa [UX] ReaderUI: save/don't save document instead of yes/no
Brings it in line with UX guidelines.
2017-08-21 09:19:24 +02:00
poire-z
031df2ffee Added PicDocument:getCoverPageImage() and :getProps()
So an image file can have a cover in coverbrowser's display.
It also allows for an alternative viewer (ImageViewer widget)
when holding on file / View full size cover.
2017-08-20 19:59:15 +02:00
poire-z
17656778b1 Book information: refactored and additional features
- Factored out duplicate code from filemanager.lua and filemanagerhistory.lua
to new filemanagerbookinfo.lua (and other common code to filemanagerutil.lua).
- Uses sidecar files' new doc_props and doc_pages settings, or fallback to
old 'stats' settings, or to opening document.
- Shows filename, filetype and directory.
- Shows description (Hold to see whole truncated text), keywords, and
cover image (tap to extract image from document and display it if available).
- Book information now available from reader menu, to display info about
the currently opened book.
- Convert possibly HTML description to plain text via added
util.htmlToPlainTextIfHtml() (for simple HTML conversion).
2017-07-14 16:46:38 +02:00
poire-z
64f699ba36 Store book metadata and nb of pages in new settings
They may already be available (with other statistics stuff) under
the 'stats' key, but not if Statistics plugin is disabled. As this
plugin may be migrated to SQLite, readerui and readerfooter will now
set two new properties: doc_props (containing all and only the metadata
returned by document:getDocumentProps()) and doc_pages (updated
by readerfooter on any display or font change).

PDF document: returns additional PDF properties: Keywords
and Subject (as Description).
2017-07-14 16:46:38 +02:00
Frans de Jonge
28524a5847 ReaderUI: return to filemanager instead of quitting if no document (#2956)
This affects #2335, at least for documents covered by `validDjvuFile()` (see 76cef07c07/frontend/document/djvudocument.lua (L15-L23)). However, that's only with regard to `touch invalid.djvu` and should not affect whatever happened in the OP.
2017-06-17 11:44:29 +08:00
Hzj_jie
30378eb2a8 Add restart koreader function and ensure FlushSettings event can be delivered to all widgets (#2772) 2017-05-16 02:11:11 -07:00
Qingping Hou
fd862f5e28 plugin(fix): catch plugin crash at init time 2017-04-22 00:22:37 -07:00
Qingping Hou
00cf81febc readercopt(fix): set view mode after reader is ready
Otherwise, self.xpointer might still be nil in
ReaderRolling:onChangeViewMode
2017-03-25 13:53:47 +01:00
Qingping Hou
a943b73303 fix: adjust pan rate for eink and non-eink screens 2017-03-24 15:42:41 +01:00
Qingping Hou
f95ad00b9e feat: add logger module & rewrite kobo suspend script in lua 2017-01-02 19:52:09 -08:00
Hzj_jie
c662ca4cc8 Load plugins also in FileManager (#2426)
added is_doc_only plugin attribute
2016-12-19 23:19:54 -08:00
Qingping Hou
a6c506dc10 kobolight(refactor): move into plugin & only enable for kobo 2016-12-10 16:06:51 -08:00
Qingping Hou
0c49b915de refactor: add touch zone subsystem to inputcontainer
Touch zone decouples screen size from gesture event registration.

The win here is each individual widget does not need to update
gesture range on screen rotate/resize anymore.

Another advantage is we now have a centralized ordered array to handle
all registered touch event listeners, makes it much easier to resolve
gesture range conflicts between multiple widgets.

This patch also includes the following changes:

* migrate readerpaging to use readerui's touch zone
* migrate readerfooter to use readerui's touch zone
* move inverse read direction setting to touch menu's setting tab
* moved kobolight widget from readerview into readerui
* various dead code cleanups and comments
2016-12-10 16:06:51 -08:00
chrox
9ab005a1d3 fix unit test of readerlink and readerpaging
and have more confidence with the unit testing framework.

Now `make testfront` won't retry on failure and testing files are
ordered in each run so that it's possible to reproduce testing failure.

And this patch also fix flush settings not working before suspend issue:
at some point the `FlushSettings` event is sent to `UIManager` instead
of `ReaderUI`, but `UIManager` only delegated events to active widgets
and `ReaderUI` is actually not an active widgets thus will miss the event.

This patch also add a verbose debug mode with "-v" as a switch to turn
on this mode. With verbose mode on, event handling will be logged.
2016-08-12 17:05:07 +08:00
Hzj_jie
d4c31d683f Add a setting to disable save document (#2138)
* Add a setting to disable save document
* Add UI elements to control save-document settings
2016-07-14 10:38:00 -07:00
chrox
03fda94562 fix #2110 by adding disable double tap option in screen options 2016-06-27 23:02:10 +08:00
Qingping Hou
f71534e399 readerfooter(fix): only populate footer info after document is loaded 2016-06-03 01:31:46 -07:00
Qingping Hou
60587e08c6 defaults(refactor): remove global hack in filemanagersetdefaults
also added screensaver folder setting dialog for kobo
2016-05-25 22:07:20 -07:00
Qingping Hou
2cf4e77ae5 readerui(chore): rename _running_instance 2016-05-02 22:42:19 -07:00
Qingping Hou
0166ff8add reader(fix): force draw info message before loading document
Since the doShowReader will run in nextTick, it will get picked up by
checkTask, which is in the beginning of next UI loop and blocks
UIManager from redrawing the screen for the info popup.
2016-04-23 21:17:38 -07:00
chrox
6e723237ba fix 'opening file' dialog not centered in landscape
by setting the timeout to 0.0 seconds so that when the screen
is turned to landscape the dialog is already closed.
2016-04-23 23:09:34 +08:00
Zijie He
667e8834ad Migrate history folder, FileManagerHistory uses own history.lua file and ReadHistory component 2016-04-20 22:44:44 -07:00
Qingping Hou
2f78493e9e minor: write reader error to stderr 2016-03-17 21:55:46 -07:00
Qingping Hou
34e0238b6f readermenu: move book status to info tab & minor cleanup 2016-03-06 22:45:41 -08:00
Qingping Hou
5e8c5243c4 uimanager: fix crash on crash.... 2016-03-05 12:37:45 -08:00
Qingping Hou
03e81cfa4d test: fix readerui instance reset test 2016-02-17 00:06:55 -08:00
Qingping Hou
b63ddb8736 fix: kill in fly hinting event on document close 2016-02-16 23:26:08 -08:00
Alex Pletnev
fbf98ed920 #1710 FR: Add support of statistics plugin for pdf 2016-02-12 16:55:02 +02:00
Alex Pletnev
0f9bfbf147 #1730 Create complete book feature 2016-02-08 18:16:55 +02:00
Qingping Hou
2f0544b1b7 refactor(statistics): avoid magic 0.1 schedule with PostRender event 2016-02-07 14:03:53 -08:00
Qingping Hou
e2096ed8d9 doc: add documentation build infrastructure 2016-02-04 10:24:53 -08:00
Andrey Golovizin
bb1d4c60b3 Choose hyphenation dict by document language 2016-01-21 17:01:01 +01:00
Qingping Hou
9c46cafc9c chore: fix luacheck warning 2016-01-03 00:56:55 -08:00
Qingping Hou
3b92bdc084 feat: support screenshot in filemanager 2016-01-03 00:47:44 -08:00
Qingping Hou
90d1101ab7 minor: quit uimanager properly on coroutine error 2015-12-25 20:35:58 -08:00
Qingping Hou
41240464ca minor: fail loudly with stack trace when doShowReader crashed 2015-12-23 00:01:43 -08:00
chrox
8b85cbf157 add support for password protected zip/cbz documents 2015-10-06 21:18:31 +08:00
chrox
d08e22ec2e add simple sync service as a plugin
The 'KOSync' plugin will synchronize furthest reading progress
across different koreader devices after users registering their
devices.

The synchronizing service is open-sourced as the project
[koreader/koreader-sync-server](https://github.com/koreader/koreader-sync-server).
2015-03-09 20:20:36 +08:00
Hans-Werner Hilse
94ce08937a clean up refreshes
This is a larger clean-up of the refresh situation.
The general shift is that refreshes are now mainly triggered by
the (top-level) widgets when they get shown or closed via UIManager.

All refreshes for the widgets when they are in use were handled by
themselves before. This adds the case of showing/closing.

It is the desired result of not having UIManager:show()/:close()
do (full screen) refreshes on its own.
2014-12-01 16:03:40 +00:00
Frans de Jonge
7c01a3f2a9 Fixed spaces stripped out by Transifex in readerui.lua by using util.template 2014-11-21 17:08:55 +01:00
chrox
d65e5cf813 dismiss 'Opening file' dialog once reader view is ready 2014-11-13 14:00:35 +08:00
chrox
bd0975896d add fulltext search for EPUB documents 2014-11-05 12:28:28 +08:00
Hans-Werner Hilse
3066c86e38 Refactoring hardware abstraction
This is a major overhaul of the hardware abstraction layer.
A few notes:

General platform distinction happens in
  frontend/device.lua
which will delegate everything else to
  frontend/device/<platform_name>/device.lua
which should extend
  frontend/device/generic/device.lua

Screen handling is implemented in
  frontend/device/screen.lua
which includes the *functionality* to support device specifics.
Actually setting up the device specific functionality, however,
is done in the device specific setup code in the relevant
device.lua file.

The same goes for input handling.
2014-11-02 21:19:04 +01:00
chrox
bdebe90412 keep only one readerui instance running 2014-10-28 18:09:22 +08:00
chrox
4897d70b1f add reader history in the info panel 2014-10-28 17:42:06 +08:00
chrox
e34ad5ffe5 refactoring module registration in readerui
now every module can be looked up in readerui so that
unit test of these modules is possible.
2014-10-09 17:41:27 +08:00
chrox
2bec0017a0 refactor out global functions showHomePage and showReaderUI 2014-09-05 21:07:42 +08:00
chrox
fd9e3d57f3 fix performance issue of screensaver on Kobo
now loadDocument will not render the document and getCoverPageImage will
be much faster.
2014-08-28 13:22:38 +08:00
chrox
092522b89d promote user to save PDF document after highlighting
This is a wordaround for #791.
2014-08-24 15:16:04 +08:00
chrox
7b10d66e1b enable Wikipedia support
Since wikipedia server is language specific we should first detect
language of the text by querying Google Translate. Make sure you have
access to both Google Translate and Wikipedia service to use this
function.
2014-08-20 14:41:48 +08:00
chrox
73e0608327 flush reader settings when closing readerui 2014-07-03 20:43:17 +08:00
chrox
26f5a4731e add peer-to-peer file sharing plugin ZSync 2014-06-23 22:35:41 +08:00
chrox
e624695d54 the Back key on Android should close the popup window and menu 2014-06-10 21:33:31 +08:00
chrox
15baeb7867 save doc settings when receiving IntoSS or Suspend or SaveState events 2014-06-08 17:56:58 +08:00
chrox
857bd6fcc8 strings not shown on GUI will not be translated
This may encourage users in transifex to join Koreader project.
2014-06-05 14:59:06 +08:00
chrox
17741e292b serialize cache when closing ReaderUI other than closing document 2014-05-15 19:41:10 +08:00
chrox
34fd9f3efa add koreader plugin mechanism
This should implement #505.
2014-04-23 22:30:36 +08:00
Qingping Hou
4b357c1466 move reader code into frontend/apps/reader
it makes more sense to completely separate the UI framework and
application code

also move frontend/ui/configurable.lua to frontend/configurable.lua
2014-04-02 17:02:01 -04:00