mirror of
https://github.com/antos-rde/antosdk-apps.git
synced 2024-12-26 04:08:21 +01:00
Enable printing in Docify
This commit is contained in:
parent
752b2a6f1d
commit
b0c2e088f9
@ -2,6 +2,7 @@
|
|||||||
Simple PDF document manager
|
Simple PDF document manager
|
||||||
|
|
||||||
## Change logs
|
## Change logs
|
||||||
|
- v0.0.6-a: Add print dialog (support server side printing)
|
||||||
- v0.0.5-a: Fix delete file bug
|
- v0.0.5-a: Fix delete file bug
|
||||||
- v0.0.4-a: Display file size in entry meta-data
|
- v0.0.4-a: Display file size in entry meta-data
|
||||||
- v0.0.3-a: Fix document moved bug, sort entries by year, month, day
|
- v0.0.3-a: Fix document moved bug, sort entries by year, month, day
|
@ -396,6 +396,33 @@ handle.delete = function(param)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
handle.printdoc = function(opt)
|
||||||
|
local cmd = "lp "
|
||||||
|
if opt.printer and opt.printer ~= "" then
|
||||||
|
cmd = cmd .. " -d "..opt.printer
|
||||||
|
end
|
||||||
|
if opt.side == 0 then
|
||||||
|
cmd = cmd.. " -o sides=one-sided"
|
||||||
|
elseif opt.side == 1 then
|
||||||
|
cmd = cmd.. " -o sides=two-sided-long-edge"
|
||||||
|
elseif opt.side == 2 then
|
||||||
|
cmd = cmd .. " -o sides=two-sided-short-edge"
|
||||||
|
end
|
||||||
|
-- orientation landscape
|
||||||
|
if opt.orientation == 1 then
|
||||||
|
cmd = cmd.." -o orientation-requested=5"
|
||||||
|
end
|
||||||
|
|
||||||
|
if opt.range == 1 then
|
||||||
|
cmd = cmd.." -P "..opt.pages
|
||||||
|
end
|
||||||
|
|
||||||
|
cmd = cmd.. " "..vfs.ospath(opt.file)
|
||||||
|
print(cmd)
|
||||||
|
os.execute(cmd)
|
||||||
|
return result("A print job has been posted on server. Check if it successes")
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
if arg.action and handle[arg.action] then
|
if arg.action and handle[arg.action] then
|
||||||
-- check if the database exits
|
-- check if the database exits
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
<div style="text-align: right;" data-height="30" >
|
<div style="text-align: right;" data-height="30" >
|
||||||
<afx-button text="__(Open)" data-id="btopen" ></afx-button>
|
<afx-button text="__(Open)" data-id="btopen" ></afx-button>
|
||||||
<afx-button text="__(Download)" data-id="btdld" ></afx-button>
|
<afx-button text="__(Download)" data-id="btdld" ></afx-button>
|
||||||
<afx-button text="__(Print)" data-id="btopen" ></afx-button>
|
<afx-button text="__(Print on server)" data-id="btprint" ></afx-button>
|
||||||
</div>
|
</div>
|
||||||
</afx-vbox>
|
</afx-vbox>
|
||||||
</afx-hbox>
|
</afx-hbox>
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
Simple PDF document manager
|
Simple PDF document manager
|
||||||
|
|
||||||
## Change logs
|
## Change logs
|
||||||
|
- v0.0.6-a: Add print dialog (support server side printing)
|
||||||
- v0.0.5-a: Fix delete file bug
|
- v0.0.5-a: Fix delete file bug
|
||||||
- v0.0.4-a: Display file size in entry meta-data
|
- v0.0.4-a: Display file size in entry meta-data
|
||||||
- v0.0.3-a: Fix document moved bug, sort entries by year, month, day
|
- v0.0.3-a: Fix document moved bug, sort entries by year, month, day
|
@ -396,6 +396,33 @@ handle.delete = function(param)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
handle.printdoc = function(opt)
|
||||||
|
local cmd = "lp "
|
||||||
|
if opt.printer and opt.printer ~= "" then
|
||||||
|
cmd = cmd .. " -d "..opt.printer
|
||||||
|
end
|
||||||
|
if opt.side == 0 then
|
||||||
|
cmd = cmd.. " -o sides=one-sided"
|
||||||
|
elseif opt.side == 1 then
|
||||||
|
cmd = cmd.. " -o sides=two-sided-long-edge"
|
||||||
|
elseif opt.side == 2 then
|
||||||
|
cmd = cmd .. " -o sides=two-sided-short-edge"
|
||||||
|
end
|
||||||
|
-- orientation landscape
|
||||||
|
if opt.orientation == 1 then
|
||||||
|
cmd = cmd.." -o orientation-requested=5"
|
||||||
|
end
|
||||||
|
|
||||||
|
if opt.range == 1 then
|
||||||
|
cmd = cmd.." -P "..opt.pages
|
||||||
|
end
|
||||||
|
|
||||||
|
cmd = cmd.. " "..vfs.ospath(opt.file)
|
||||||
|
print(cmd)
|
||||||
|
os.execute(cmd)
|
||||||
|
return result("A print job has been posted on server. Check if it successes")
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
if arg.action and handle[arg.action] then
|
if arg.action and handle[arg.action] then
|
||||||
-- check if the database exits
|
-- check if the database exits
|
||||||
|
@ -14,3 +14,12 @@ canvas[data-id = "preview-canvas"]
|
|||||||
display: block;
|
display: block;
|
||||||
margin:0 auto;
|
margin:0 auto;
|
||||||
}
|
}
|
||||||
|
afx-app-window[data-id = "DocifyPrintDialog"] i.label-text {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
afx-app-window[data-id = "DocifyPrintDialog"] input[type="radio"] {
|
||||||
|
margin: 0;
|
||||||
|
height: 12px;
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
File diff suppressed because one or more lines are too long
@ -7,7 +7,7 @@
|
|||||||
"author": "",
|
"author": "",
|
||||||
"email": ""
|
"email": ""
|
||||||
},
|
},
|
||||||
"version":"0.0.5-a",
|
"version":"0.0.6-a",
|
||||||
"category":"Other",
|
"category":"Other",
|
||||||
"iconclass":"fa fa-adn",
|
"iconclass":"fa fa-adn",
|
||||||
"mimes":["none"],
|
"mimes":["none"],
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
<div style="text-align: right;" data-height="30" >
|
<div style="text-align: right;" data-height="30" >
|
||||||
<afx-button text="__(Open)" data-id="btopen" ></afx-button>
|
<afx-button text="__(Open)" data-id="btopen" ></afx-button>
|
||||||
<afx-button text="__(Download)" data-id="btdld" ></afx-button>
|
<afx-button text="__(Download)" data-id="btdld" ></afx-button>
|
||||||
<afx-button text="__(Print)" data-id="btopen" ></afx-button>
|
<afx-button text="__(Print on server)" data-id="btprint" ></afx-button>
|
||||||
</div>
|
</div>
|
||||||
</afx-vbox>
|
</afx-vbox>
|
||||||
</afx-hbox>
|
</afx-hbox>
|
||||||
|
Binary file not shown.
@ -125,7 +125,7 @@ class DocDialog extends this.OS.GUI.BasicDialog
|
|||||||
value: 0
|
value: 0
|
||||||
}
|
}
|
||||||
@ylist.selected = 0
|
@ylist.selected = 0
|
||||||
for y in [1980..new Date().getFullYear()]
|
for y in [1960..new Date().getFullYear()]
|
||||||
@ylist.push {
|
@ylist.push {
|
||||||
text:"#{y}",
|
text:"#{y}",
|
||||||
value: y,
|
value: y,
|
||||||
@ -274,3 +274,56 @@ FilePreviewDialog.scheme = """
|
|||||||
</afx-hbox>
|
</afx-hbox>
|
||||||
</afx-app-window>
|
</afx-app-window>
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
class PrintDialog extends this.OS.GUI.BasicDialog
|
||||||
|
constructor: () ->
|
||||||
|
super "PrintDialog", PrintDialog.scheme
|
||||||
|
|
||||||
|
main: () ->
|
||||||
|
super.main()
|
||||||
|
@find("printerName").value = @parent.setting.printer
|
||||||
|
@find("btnprint").onbtclick = (e) =>
|
||||||
|
data = {}
|
||||||
|
data.range = parseInt($('input[name=range]:checked', @scheme).val())
|
||||||
|
data.pages = @find("txtPageRange").value
|
||||||
|
data.printer = @find("printerName").value
|
||||||
|
data.orientation = parseInt($('input[name=orientation]:checked', @scheme).val())
|
||||||
|
data.side = parseInt($('input[name=side]:checked', @scheme).val())
|
||||||
|
@handle data if @handle
|
||||||
|
@quit()
|
||||||
|
|
||||||
|
PrintDialog.scheme = """
|
||||||
|
<afx-app-window width='300' height='300' data-id="DocifyPrintDialog" apptitle = "__(Print)">
|
||||||
|
<afx-vbox>
|
||||||
|
<afx-label text = "__(Printer name)" data-height="22"></afx-label>
|
||||||
|
<input type="text" data-id="printerName" data-height="25"/>
|
||||||
|
<afx-label text = "__(Range)" data-height="22"></afx-label>
|
||||||
|
<div>
|
||||||
|
<input type="radio" name="range" value="0" checked />
|
||||||
|
<label for="0">All</label><br>
|
||||||
|
<input type="radio" name="range" value="1" />
|
||||||
|
<label for="1">Pages: </label>
|
||||||
|
<input type="text" data-id="txtPageRange" />
|
||||||
|
</div>
|
||||||
|
<afx-label text = "__(Orientation)" data-height="22"></afx-label>
|
||||||
|
<div>
|
||||||
|
<input type="radio" name="orientation" value="0" checked />
|
||||||
|
<label for="0">Portrait</label><br>
|
||||||
|
<input type="radio" name="orientation" value="1" />
|
||||||
|
<label for="1">Landscape</label>
|
||||||
|
</div>
|
||||||
|
<afx-label text = "__(Side)" data-height="22"></afx-label>
|
||||||
|
<div>
|
||||||
|
<input type="radio" name="side" value="0" />
|
||||||
|
<label for="0">One side</label><br>
|
||||||
|
<input type="radio" name="side" value="1" checked />
|
||||||
|
<label for="1">Double side long edge</label><br>
|
||||||
|
<input type="radio" name="side" value="2" />
|
||||||
|
<label for="2">Double side short edge</label>
|
||||||
|
</div>
|
||||||
|
<div data-height="30" style="text-align:right;">
|
||||||
|
<afx-button text="__(Print)" style="margin-right:5px;" data-id="btnprint"></afx-button>
|
||||||
|
</div>
|
||||||
|
</afx-vbox>
|
||||||
|
</afx-app-window>
|
||||||
|
"""
|
@ -4,6 +4,8 @@ class Docify extends this.OS.application.BaseApplication
|
|||||||
|
|
||||||
main: () ->
|
main: () ->
|
||||||
|
|
||||||
|
@setting.printer = "" unless @setting.printer
|
||||||
|
|
||||||
@catview = @find "catview"
|
@catview = @find "catview"
|
||||||
@docview = @find "docview"
|
@docview = @find "docview"
|
||||||
@docpreview = @find "preview-canvas"
|
@docpreview = @find "preview-canvas"
|
||||||
@ -26,6 +28,18 @@ class Docify extends this.OS.application.BaseApplication
|
|||||||
return @error m.error if m.error
|
return @error m.error if m.error
|
||||||
@_gui.openWith m.result
|
@_gui.openWith m.result
|
||||||
.catch (e) => @error e.toString(), e
|
.catch (e) => @error e.toString(), e
|
||||||
|
@find("btprint").onbtclick = (e) =>
|
||||||
|
item = @docview.selectedItem
|
||||||
|
return unless item
|
||||||
|
@openDialog new PrintDialog(), {}
|
||||||
|
.then (d) =>
|
||||||
|
return unless d
|
||||||
|
d.file = item.data.file
|
||||||
|
@exec("printdoc", d)
|
||||||
|
.then (r) =>
|
||||||
|
return @error r.error if r.error
|
||||||
|
@notify r.result
|
||||||
|
.catch (e) => @error __("Unable to insert category: {0}", e.toString()), e
|
||||||
@catview.buttons = [
|
@catview.buttons = [
|
||||||
{
|
{
|
||||||
text: "",
|
text: "",
|
||||||
@ -241,11 +255,12 @@ class Docify extends this.OS.application.BaseApplication
|
|||||||
menu: () ->
|
menu: () ->
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
text: "__(View)",
|
text: "__(Options)",
|
||||||
nodes: [
|
nodes: [
|
||||||
{ text: "__(Owners)", id:"owners"},
|
{ text: "__(Owners)", id:"owners"},
|
||||||
{ text: "__(Preview)", id:"preview"},
|
{ text: "__(Preview)", id:"preview"},
|
||||||
{ text: "__(Change doc path)", id:"setdocp"}
|
{ text: "__(Change doc path)", id:"setdocp"},
|
||||||
|
{ text: "__(Set default printer)", id:"setprinter"}
|
||||||
],
|
],
|
||||||
onchildselect: (e) => @fileMenuHandle e.data.item.data.id
|
onchildselect: (e) => @fileMenuHandle e.data.item.data.id
|
||||||
}
|
}
|
||||||
@ -262,5 +277,9 @@ class Docify extends this.OS.application.BaseApplication
|
|||||||
when "setdocp"
|
when "setdocp"
|
||||||
@setting.docpath = undefined
|
@setting.docpath = undefined
|
||||||
@initialize()
|
@initialize()
|
||||||
|
when "setprinter"
|
||||||
|
@openDialog "PromptDialog", {title: __("Default Printer"), label: __("Enter printer name")}
|
||||||
|
.then (n) =>
|
||||||
|
@setting.printer = n
|
||||||
|
|
||||||
this.OS.register "Docify", Docify
|
this.OS.register "Docify", Docify
|
@ -13,3 +13,12 @@ canvas[data-id = "preview-canvas"]
|
|||||||
display: block;
|
display: block;
|
||||||
margin:0 auto;
|
margin:0 auto;
|
||||||
}
|
}
|
||||||
|
afx-app-window[data-id = "DocifyPrintDialog"] i.label-text {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
afx-app-window[data-id = "DocifyPrintDialog"] input[type="radio"] {
|
||||||
|
margin: 0;
|
||||||
|
height: 12px;
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
@ -7,7 +7,7 @@
|
|||||||
"author": "",
|
"author": "",
|
||||||
"email": ""
|
"email": ""
|
||||||
},
|
},
|
||||||
"version":"0.0.5-a",
|
"version":"0.0.6-a",
|
||||||
"category":"Other",
|
"category":"Other",
|
||||||
"iconclass":"fa fa-adn",
|
"iconclass":"fa fa-adn",
|
||||||
"mimes":["none"],
|
"mimes":["none"],
|
||||||
|
@ -105,7 +105,7 @@
|
|||||||
"description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/Docify/README.md",
|
"description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/Docify/README.md",
|
||||||
"category": "Other",
|
"category": "Other",
|
||||||
"author": "",
|
"author": "",
|
||||||
"version": "0.0.5-a",
|
"version": "0.0.6-a",
|
||||||
"dependencies": [],
|
"dependencies": [],
|
||||||
"download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/Docify/build/release/Docify.zip"
|
"download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/Docify/build/release/Docify.zip"
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user