mirror of https://github.com/koreader/koreader
[Desktop] Open writable font dir, toggle system+user/user fonts, fix openLink on mac (#5220)
Fixes #5093pull/5233/head
parent
8be113e4bd
commit
3a957d71e3
@ -0,0 +1,81 @@
|
||||
local Device = require("device")
|
||||
local logger = require("logger")
|
||||
local util = require("util")
|
||||
local _ = require("gettext")
|
||||
|
||||
--[[ Font settings for desktop linux and mac ]]--
|
||||
|
||||
local function getUserDir()
|
||||
return os.getenv("HOME").."/.local/share/fonts"
|
||||
end
|
||||
|
||||
-- System fonts are common in linux
|
||||
local function getSystemDir()
|
||||
local path = "/usr/share/fonts"
|
||||
if util.pathExists(path) then
|
||||
return path
|
||||
else
|
||||
-- mac doesn't use ttf fonts
|
||||
return nil
|
||||
end
|
||||
end
|
||||
|
||||
local function usesSystemFonts()
|
||||
return G_reader_settings:isTrue("system_fonts")
|
||||
end
|
||||
|
||||
local function openFontDir()
|
||||
local user_dir = getUserDir()
|
||||
local openable = util.pathExists(user_dir)
|
||||
if not openable then
|
||||
logger.info("Font path not found, making one in ", user_dir)
|
||||
openable = util.makePath(user_dir)
|
||||
end
|
||||
if not openable then
|
||||
logger.warn("Unable to create the folder ", user_dir)
|
||||
return
|
||||
end
|
||||
if Device:canOpenLink() then
|
||||
Device:openLink(user_dir)
|
||||
end
|
||||
end
|
||||
|
||||
local FontSettings = {}
|
||||
|
||||
function FontSettings:getPath()
|
||||
if usesSystemFonts() then
|
||||
local system_path = getSystemDir()
|
||||
if system_path ~= nil then
|
||||
return getUserDir()..";"..system_path
|
||||
end
|
||||
end
|
||||
return getUserDir()
|
||||
end
|
||||
|
||||
function FontSettings:getMenuTable()
|
||||
return {
|
||||
text = _("Font settings"),
|
||||
separator = true,
|
||||
sub_item_table = {
|
||||
{
|
||||
text = _("Enable system fonts"),
|
||||
checked_func = usesSystemFonts,
|
||||
callback = function()
|
||||
G_reader_settings:saveSetting("system_fonts", not usesSystemFonts())
|
||||
local UIManager = require("ui/uimanager")
|
||||
local InfoMessage = require("ui/widget/infomessage")
|
||||
UIManager:show(InfoMessage:new{
|
||||
text = _("This will take effect on next restart.")
|
||||
})
|
||||
end,
|
||||
},
|
||||
{
|
||||
text = _("Open fonts folder"),
|
||||
keep_menu_open = true,
|
||||
callback = openFontDir,
|
||||
},
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
return FontSettings
|
Loading…
Reference in New Issue