mirror of
https://github.com/koreader/koreader.git
synced 2025-12-13 20:36:53 +01:00
screenshot to PNG files by default
This commit is contained in:
@@ -7,7 +7,9 @@ local InfoMessage = require("ui/widget/infomessage")
|
||||
local _ = require("gettext")
|
||||
local DEBUG = require("dbg")
|
||||
|
||||
local ReaderScreenshot = InputContainer:new{}
|
||||
local ReaderScreenshot = InputContainer:new{
|
||||
datetime_name = "screenshots/Screenshot_%Y-%b-%d_%Hh%M.png",
|
||||
}
|
||||
|
||||
function ReaderScreenshot:init()
|
||||
local diagonal = math.sqrt(
|
||||
@@ -32,16 +34,13 @@ function ReaderScreenshot:init()
|
||||
}
|
||||
end
|
||||
|
||||
function ReaderScreenshot:onScreenshot()
|
||||
if os.execute("screenshot") ~= 0 then
|
||||
local screenshot_name = os.date("screenshots/Screenshot_%Y-%B-%d_%Hh%M.pam")
|
||||
UIManager:show(InfoMessage:new{
|
||||
text = _("Writing screen to ")..screenshot_name,
|
||||
timeout = 2,
|
||||
})
|
||||
Screen.bb:writePAM(screenshot_name)
|
||||
DEBUG(screenshot_name)
|
||||
end
|
||||
function ReaderScreenshot:onScreenshot(filename)
|
||||
local screenshot_name = filename or os.date(self.datetime_name)
|
||||
UIManager:show(InfoMessage:new{
|
||||
text = _("Writing screen to ")..screenshot_name,
|
||||
timeout = 2,
|
||||
})
|
||||
Screen:shot(screenshot_name)
|
||||
UIManager.full_refresh = true
|
||||
return true
|
||||
end
|
||||
|
||||
@@ -174,10 +174,14 @@ function Screen:restoreFromSavedBB()
|
||||
end
|
||||
end
|
||||
|
||||
function Screen:shot(filename)
|
||||
DEBUG("write PNG file", filename)
|
||||
self.bb:writePNG(filename)
|
||||
end
|
||||
|
||||
function Screen:close()
|
||||
DEBUG("close screen framebuffer")
|
||||
self.fb:close()
|
||||
end
|
||||
|
||||
|
||||
return Screen
|
||||
|
||||
13
spec/unit/filemanager_spec.lua
Normal file
13
spec/unit/filemanager_spec.lua
Normal file
@@ -0,0 +1,13 @@
|
||||
require("commonrequire")
|
||||
local FileManager = require("apps/filemanager/filemanager")
|
||||
local UIManager = require("ui/uimanager")
|
||||
local Screen = require("device").screen
|
||||
local DEBUG = require("dbg")
|
||||
|
||||
describe("FileManager module", function()
|
||||
it("should show file manager", function()
|
||||
FileManager:showFiles("../../test")
|
||||
UIManager:scheduleIn(1, function() UIManager:quit() end)
|
||||
UIManager:run()
|
||||
end)
|
||||
end)
|
||||
36
spec/unit/readerscreenshot_spec.lua
Normal file
36
spec/unit/readerscreenshot_spec.lua
Normal file
@@ -0,0 +1,36 @@
|
||||
require("commonrequire")
|
||||
local DocumentRegistry = require("document/documentregistry")
|
||||
local ReaderUI = require("apps/reader/readerui")
|
||||
local lfs = require("libs/libkoreader-lfs")
|
||||
local UIManager = require("ui/uimanager")
|
||||
local Screen = require("device").screen
|
||||
local Event = require("ui/event")
|
||||
local DEBUG = require("dbg")
|
||||
|
||||
describe("ReaderScreenshot module", function()
|
||||
local sample_epub = "spec/front/unit/data/leaves.epub"
|
||||
local readerui
|
||||
setup(function()
|
||||
readerui = ReaderUI:new{
|
||||
document = DocumentRegistry:openDocument(sample_epub),
|
||||
}
|
||||
end)
|
||||
it("should get screenshot in portrait", function()
|
||||
local name = "screenshots/reader_screenshot_portrait.png"
|
||||
readerui:handleEvent(Event:new("ChangeScreenMode", "portrait"))
|
||||
UIManager:show(readerui)
|
||||
UIManager:scheduleIn(1, function() UIManager:close(readerui) end)
|
||||
UIManager:run()
|
||||
readerui.screenshot:onScreenshot(name)
|
||||
assert.truthy(lfs.attributes(name, "mode"))
|
||||
end)
|
||||
it("should get screenshot in landscape", function()
|
||||
local name = "screenshots/reader_screenshot_landscape.png"
|
||||
readerui:handleEvent(Event:new("ChangeScreenMode", "landscape"))
|
||||
UIManager:show(readerui)
|
||||
UIManager:scheduleIn(2, function() UIManager:close(readerui) end)
|
||||
UIManager:run()
|
||||
readerui.screenshot:onScreenshot(name)
|
||||
assert.truthy(lfs.attributes(name, "mode"))
|
||||
end)
|
||||
end)
|
||||
@@ -2,6 +2,7 @@ require("commonrequire")
|
||||
local DocumentRegistry = require("document/documentregistry")
|
||||
local ReaderUI = require("apps/reader/readerui")
|
||||
local DocSettings = require("docsettings")
|
||||
local UIManager = require("ui/uimanager")
|
||||
local DEBUG = require("dbg")
|
||||
|
||||
describe("Readerui module", function()
|
||||
@@ -21,6 +22,11 @@ describe("Readerui module", function()
|
||||
assert.are.same(doc_settings.data.last_xpointer,
|
||||
readerui.doc_settings.data.last_xpointer)
|
||||
end)
|
||||
it("should show reader", function()
|
||||
UIManager:show(readerui)
|
||||
UIManager:scheduleIn(1, function() UIManager:close(readerui) end)
|
||||
UIManager:run()
|
||||
end)
|
||||
it("should close document", function()
|
||||
readerui:closeDocument()
|
||||
assert(readerui.document == nil)
|
||||
|
||||
Reference in New Issue
Block a user