mirror of
https://github.com/antos-rde/antosdk-apps.git
synced 2024-12-25 03:38:21 +01:00
update code
This commit is contained in:
parent
aae08d9efe
commit
676cce26c2
@ -1 +1 @@
|
|||||||
(function(){var t;(t=class extends this.OS.GUI.BaseApplication{constructor(t){super("About",t)}main(){var t,n;return t=this,this.container=this.find("container"),(n="os://README.md").asFileHandle().read().then((function(n){var e;return e=new showdown.Converter,$(t.container).html(e.makeHtml(n))})).catch(()=>this.notify(__("Unable to read: {0}",n))),this.find("btnclose").set("onbtclick",()=>this.quit())}}).singleton=!0,t.dependencies=["os://scripts/showdown.min.js"],this.OS.register("About",t)}).call(this);
|
(function(){var t;(t=class extends this.OS.application.BaseApplication{constructor(t){super("About",t)}main(){var t,n;return t=this,this.container=this.find("container"),(n="os://README.md").asFileHandle().read().then((function(n){var i;return i=new showdown.Converter,$(t.container).html(i.makeHtml(n))})).catch(()=>this.notify(__("Unable to read: {0}",n))),this.find("btnclose").onbtclick=()=>this.quit()}}).singleton=!0,t.dependencies=["os://scripts/showdown.min.js"],this.OS.register("About",t)}).call(this);
|
@ -6,7 +6,7 @@
|
|||||||
"author": "Xuan Sang LE",
|
"author": "Xuan Sang LE",
|
||||||
"email": "xsang.le@gmail.com"
|
"email": "xsang.le@gmail.com"
|
||||||
},
|
},
|
||||||
"version":"0.0.2-a",
|
"version":"0.0.3-a",
|
||||||
"category":"Other",
|
"category":"Other",
|
||||||
"iconclass":"fa fa-question-circle",
|
"iconclass":"fa fa-question-circle",
|
||||||
"mimes":["none"],
|
"mimes":["none"],
|
||||||
|
Binary file not shown.
@ -1,4 +1,4 @@
|
|||||||
class About extends this.OS.GUI.BaseApplication
|
class About extends this.OS.application.BaseApplication
|
||||||
constructor: ( args ) ->
|
constructor: ( args ) ->
|
||||||
super "About", args
|
super "About", args
|
||||||
|
|
||||||
@ -14,7 +14,7 @@ class About extends this.OS.GUI.BaseApplication
|
|||||||
.catch () =>
|
.catch () =>
|
||||||
@notify __("Unable to read: {0}", path)
|
@notify __("Unable to read: {0}", path)
|
||||||
|
|
||||||
@find("btnclose").set "onbtclick", () =>
|
@find("btnclose").onbtclick = () =>
|
||||||
@quit()
|
@quit()
|
||||||
|
|
||||||
About.singleton = true
|
About.singleton = true
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
"author": "Xuan Sang LE",
|
"author": "Xuan Sang LE",
|
||||||
"email": "xsang.le@gmail.com"
|
"email": "xsang.le@gmail.com"
|
||||||
},
|
},
|
||||||
"version":"0.0.2-a",
|
"version":"0.0.3-a",
|
||||||
"category":"Other",
|
"category":"Other",
|
||||||
"iconclass":"fa fa-question-circle",
|
"iconclass":"fa fa-question-circle",
|
||||||
"mimes":["none"],
|
"mimes":["none"],
|
||||||
|
@ -1 +1 @@
|
|||||||
(function(){var t,i,e;e=this.OS.PM,i=this.OS.APP,(t=class extends this.OS.GUI.BaseApplication{constructor(t){super("ActivityMonitor",t)}main(){var t;return this.scheme.set("apptitle","Activity Monitor"),this.grid=this.find("mygrid"),this.on("btclick",t=>{var i,s,a;if("btkill"===t.id&&(a=this.grid.get("selectedRow")))return s=a.get("data")[0],(i=e.appByPid(s.text))?i.quit(!0):void 0}),t=[{width:50,text:"__(Pid)"},{text:"__(Name)"},{text:"__(Type)",width:80},{width:80,text:"__(Alive (ms))"}],this.gdata={processes:{},alive:[]},this.grid.set("header",t),this.monitor()}monitor(){var t;return this.gdata.alive=[],t=(new Date).getTime(),$.each(e.processes,(e,s)=>$.each(s,(e,s)=>(this.gdata.processes[s.pid]?(this.gdata.processes[s.pid][3].text=t-s.birth,this.gdata.processes[s.pid][3].domel.update()):(this.gdata.processes[s.pid]=[{text:s.pid},{icon:1===i[s.name].type?i[s.name].meta.icon:s.icon,iconclass:1===i[s.name].type?i[s.name].meta.iconclass:s.iconclass,text:s.name},{text:1===i[s.name].type?"__(Application)":"__(Service)"},{text:t-s.birth}],this.grid.push(this.gdata.processes[s.pid])),this.gdata.alive.push(s.pid)))),$.each(this.gdata.processes,(t,i)=>{if($.inArray(Number(t),this.gdata.alive)<0)return this.grid.remove(this.gdata.processes[t].domel),this.gdata.processes[t]=void 0,delete this.gdata.processes[t]}),this.timer=setTimeout(()=>this.monitor(),500)}cleanup(t){if(this.timer)return clearTimeout(this.timer)}}).singleton=!0,this.OS.register("ActivityMonitor",t)}).call(this);
|
(function(){var t,i,e;e=this.OS.PM,i=this.OS.application,(t=class extends this.OS.application.BaseApplication{constructor(t){super("ActivityMonitor",t)}main(){var t;return this.scheme.apptitle="Activity Monitor",this.grid=this.find("mygrid"),this.on("btclick",t=>{var i,s,a;if("btkill"===t.id&&(a=this.grid.selectedRow))return s=a.data[0],(i=e.appByPid(s.text))?i.quit(!0):void 0}),t=[{width:50,text:"__(Pid)"},{text:"__(Name)"},{text:"__(Type)",width:80},{width:80,text:"__(Alive (ms))"}],this.gdata={processes:{},alive:[]},this.grid.header=t,this.monitor()}monitor(){var t;return this.gdata.alive=[],t=(new Date).getTime(),$.each(e.processes,(e,s)=>$.each(s,(e,s)=>(this.gdata.processes[s.pid]?(this.gdata.processes[s.pid][3].text=t-s.birth,this.gdata.processes[s.pid][3].domel.update()):(this.gdata.processes[s.pid]=[{text:s.pid},{icon:1===i[s.name].type?i[s.name].meta.icon:s.icon,iconclass:1===i[s.name].type?i[s.name].meta.iconclass:s.iconclass,text:s.name},{text:1===i[s.name].type?"__(Application)":"__(Service)"},{text:t-s.birth}],this.grid.push(this.gdata.processes[s.pid])),this.gdata.alive.push(s.pid)))),$.each(this.gdata.processes,(t,i)=>{if($.inArray(Number(t),this.gdata.alive)<0)return this.grid.delete(this.gdata.processes[t].domel),this.gdata.processes[t]=void 0,delete this.gdata.processes[t]}),this.timer=setTimeout(()=>this.monitor(),500)}cleanup(t){if(this.timer)return clearTimeout(this.timer)}}).singleton=!0,this.OS.register("ActivityMonitor",t)}).call(this);
|
@ -6,7 +6,7 @@
|
|||||||
"author": "Xuan Sang LE",
|
"author": "Xuan Sang LE",
|
||||||
"email": "xsang.le@gmail.com"
|
"email": "xsang.le@gmail.com"
|
||||||
},
|
},
|
||||||
"version":"0.0.2-a",
|
"version":"0.0.4-a",
|
||||||
"category":"System",
|
"category":"System",
|
||||||
"iconclass":"fa fa-heartbeat",
|
"iconclass":"fa fa-heartbeat",
|
||||||
"mimes":["none"]
|
"mimes":["none"]
|
||||||
|
Binary file not shown.
@ -16,18 +16,18 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
#along with this program. If not, see https://www.gnu.org/licenses/.
|
#along with this program. If not, see https://www.gnu.org/licenses/.
|
||||||
_PM = this.OS.PM
|
_PM = this.OS.PM
|
||||||
_APP = this.OS.APP
|
_APP = this.OS.application
|
||||||
class ActivityMonitor extends this.OS.GUI.BaseApplication
|
class ActivityMonitor extends this.OS.application.BaseApplication
|
||||||
constructor: (args) ->
|
constructor: (args) ->
|
||||||
super "ActivityMonitor", args
|
super "ActivityMonitor", args
|
||||||
main: () ->
|
main: () ->
|
||||||
@scheme.set "apptitle", "Activity Monitor"
|
@scheme.apptitle = "Activity Monitor"
|
||||||
@grid = @find "mygrid"
|
@grid = @find "mygrid"
|
||||||
@on "btclick", (e) =>
|
@on "btclick", (e) =>
|
||||||
return unless e.id == "btkill"
|
return unless e.id == "btkill"
|
||||||
item = @grid.get "selectedRow"
|
item = @grid.selectedRow
|
||||||
return unless item
|
return unless item
|
||||||
data = item.get("data")[0]
|
data = item.data[0]
|
||||||
app = _PM.appByPid data.text
|
app = _PM.appByPid data.text
|
||||||
app.quit(true) if app
|
app.quit(true) if app
|
||||||
|
|
||||||
@ -52,7 +52,7 @@ class ActivityMonitor extends this.OS.GUI.BaseApplication
|
|||||||
processes: {}
|
processes: {}
|
||||||
alive: []
|
alive: []
|
||||||
}
|
}
|
||||||
@grid.set "header", header
|
@grid.header = header
|
||||||
@monitor()
|
@monitor()
|
||||||
|
|
||||||
monitor: () ->
|
monitor: () ->
|
||||||
@ -84,7 +84,7 @@ class ActivityMonitor extends this.OS.GUI.BaseApplication
|
|||||||
|
|
||||||
$.each @gdata.processes, (i, e) =>
|
$.each @gdata.processes, (i, e) =>
|
||||||
if ($.inArray (Number i), @gdata.alive) < 0
|
if ($.inArray (Number i), @gdata.alive) < 0
|
||||||
@grid.remove @gdata.processes[i].domel
|
@grid.delete @gdata.processes[i].domel
|
||||||
@gdata.processes[i] = undefined
|
@gdata.processes[i] = undefined
|
||||||
delete @gdata.processes[i]
|
delete @gdata.processes[i]
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
"author": "Xuan Sang LE",
|
"author": "Xuan Sang LE",
|
||||||
"email": "xsang.le@gmail.com"
|
"email": "xsang.le@gmail.com"
|
||||||
},
|
},
|
||||||
"version":"0.0.2-a",
|
"version":"0.0.4-a",
|
||||||
"category":"System",
|
"category":"System",
|
||||||
"iconclass":"fa fa-heartbeat",
|
"iconclass":"fa fa-heartbeat",
|
||||||
"mimes":["none"]
|
"mimes":["none"]
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Blogger
|
# Blogger
|
||||||
Blackend for my blog at
|
|
||||||
|
|
||||||
"katex/fonts",
|
Blackend for my blog at https://blog.iohub.dev
|
||||||
|
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
# Blogger
|
# Blogger
|
||||||
Blackend for my blog at
|
Blackend for my blog at https://blog.iohub.dev
|
||||||
|
|
||||||
"katex/fonts",
|
|
@ -26,7 +26,7 @@ afx-app-window[data-id="blogger-win"] afx-hbox[data-id="user-container"] afx-lab
|
|||||||
afx-app-window .lbl-header i.label-text{
|
afx-app-window .lbl-header i.label-text{
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
afx-app-window[data-id="blogger-win"] afx-hbox[data-id="cv-container"] afx-label.cat-header{
|
afx-app-window[data-id="blogger-win"] afx-hbox[data-id="cv-container"] .cat-header{
|
||||||
border-bottom: 1px solid #cbcbcb;
|
border-bottom: 1px solid #cbcbcb;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
File diff suppressed because one or more lines are too long
@ -6,7 +6,7 @@
|
|||||||
"author": "Xuan Sang LE",
|
"author": "Xuan Sang LE",
|
||||||
"email": "xsang.le@gmail.com"
|
"email": "xsang.le@gmail.com"
|
||||||
},
|
},
|
||||||
"version":"0.0.7-a",
|
"version":"0.0.9-a",
|
||||||
"category":"Internet",
|
"category":"Internet",
|
||||||
"iconclass":"fa fa-book",
|
"iconclass":"fa fa-book",
|
||||||
"mimes":["none"]
|
"mimes":["none"]
|
||||||
|
Binary file not shown.
@ -17,24 +17,24 @@
|
|||||||
#along with this program. If not, see https://www.gnu.org/licenses/.
|
#along with this program. If not, see https://www.gnu.org/licenses/.
|
||||||
class BloggerCategoryDialog extends this.OS.GUI.BasicDialog
|
class BloggerCategoryDialog extends this.OS.GUI.BasicDialog
|
||||||
constructor: () ->
|
constructor: () ->
|
||||||
super "BloggerCategoryDialog"
|
super "BloggerCategoryDialog", BloggerCategoryDialog.scheme
|
||||||
|
|
||||||
main: () ->
|
main: () ->
|
||||||
super.main()
|
super.main()
|
||||||
@tree = @find "tree"
|
@tree = @find "tree"
|
||||||
@txtinput = @find "txtinput"
|
@txtinput = @find "txtinput"
|
||||||
|
|
||||||
(@find "bt-ok").set "onbtclick", (e) =>
|
(@find "bt-ok").onbtclick = (e) =>
|
||||||
sel = @tree.get "selectedItem"
|
sel = @tree.selectedItem
|
||||||
return @notify __("Please select a parent category") unless sel
|
return @notify __("Please select a parent category") unless sel
|
||||||
seldata = sel.get "data"
|
seldata = sel.data
|
||||||
val = @txtinput.value
|
val = @txtinput.value
|
||||||
return @notify __("Please enter category name") if val is "" and not @data.selonly
|
return @notify __("Please enter category name") if val is "" and not @data.selonly
|
||||||
return @notify __("Parent can not be the category itself") if @data.cat and @data.cat.id is seldata.id
|
return @notify __("Parent can not be the category itself") if @data.cat and @data.cat.id is seldata.id
|
||||||
@handle { p: seldata, value: val } if @handle
|
@handle { p: seldata, value: val } if @handle
|
||||||
@quit()
|
@quit()
|
||||||
|
|
||||||
(@find "bt-cancel").set "onbtclick", (e) =>
|
(@find "bt-cancel").onbtclick = (e) =>
|
||||||
@quit()
|
@quit()
|
||||||
if @data and @data.tree
|
if @data and @data.tree
|
||||||
if @data and @data.cat
|
if @data and @data.cat
|
||||||
@ -44,7 +44,7 @@ class BloggerCategoryDialog extends this.OS.GUI.BasicDialog
|
|||||||
else
|
else
|
||||||
seldata = @findDataByID @data.cat.pid, @data.tree.nodes
|
seldata = @findDataByID @data.cat.pid, @data.tree.nodes
|
||||||
seldata.selected = true if seldata
|
seldata.selected = true if seldata
|
||||||
@tree.set "data", @data.tree
|
@tree.data = @data.tree
|
||||||
@tree.expandAll()
|
@tree.expandAll()
|
||||||
# TODO set selected category name
|
# TODO set selected category name
|
||||||
|
|
||||||
@ -62,10 +62,13 @@ BloggerCategoryDialog.scheme = """
|
|||||||
<afx-tree-view data-id="tree" ></afx-tree-view>
|
<afx-tree-view data-id="tree" ></afx-tree-view>
|
||||||
<afx-label text="__(Category name)" data-height="25" class="lbl-header" ></afx-label>
|
<afx-label text="__(Category name)" data-height="25" class="lbl-header" ></afx-label>
|
||||||
<input type="text" data-height="25" data-id = "txtinput"/ >
|
<input type="text" data-height="25" data-id = "txtinput"/ >
|
||||||
<div data-height = '30' style=' text-align:right;padding:3px;'>
|
<afx-hbox data-height = '30'>
|
||||||
|
<div style=' text-align:right;'>
|
||||||
<afx-button data-id = "bt-ok" text = "__(Ok)"></afx-button>
|
<afx-button data-id = "bt-ok" text = "__(Ok)"></afx-button>
|
||||||
<afx-button data-id = "bt-cancel" text = "__(Cancel)"></afx-button>
|
<afx-button data-id = "bt-cancel" text = "__(Cancel)"></afx-button>
|
||||||
</div>
|
</div>
|
||||||
|
<div data-width="5"></div>
|
||||||
|
</afx-hbox>
|
||||||
</afx-vbox>
|
</afx-vbox>
|
||||||
</afx-app-window>
|
</afx-app-window>
|
||||||
"""
|
"""
|
||||||
@ -89,15 +92,15 @@ class BloggerCVSectionDiaglog extends this.OS.GUI.BasicDialog
|
|||||||
inputs = @select "[input-class='user-input']"
|
inputs = @select "[input-class='user-input']"
|
||||||
(($ v).val @data.section[v.name] for v in inputs ) if @data and @data.section
|
(($ v).val @data.section[v.name] for v in inputs ) if @data and @data.section
|
||||||
@editor.value @data.section.content if @data and @data.section
|
@editor.value @data.section.content if @data and @data.section
|
||||||
(@find "section-publish").set "swon", (if @data and @data.section and Number(@data.section.publish) then true else false)
|
(@find "section-publish").swon = (if @data and @data.section and Number(@data.section.publish) then true else false)
|
||||||
(@find "bt-cv-sec-save").set "onbtclick", (e) =>
|
(@find "bt-cv-sec-save").onbtclick = (e) =>
|
||||||
data = {}
|
data = {}
|
||||||
data[v.name] = ($ v).val() for v in inputs
|
data[v.name] = ($ v).val() for v in inputs
|
||||||
data.content = @editor.value()
|
data.content = @editor.value()
|
||||||
return @notify __("Title or content must not be blank") if data.title is "" and data.content is ""
|
return @notify __("Title or content must not be blank") if data.title is "" and data.content is ""
|
||||||
#return @notify "Content must not be blank" if data.content is ""
|
#return @notify "Content must not be blank" if data.content is ""
|
||||||
data.id = @data.section.id if @data and @data.section
|
data.id = @data.section.id if @data and @data.section
|
||||||
val = (@find "section-publish").get "swon"
|
val = (@find "section-publish").swon
|
||||||
if val is true
|
if val is true
|
||||||
data.publish = 1
|
data.publish = 1
|
||||||
else
|
else
|
||||||
@ -136,12 +139,12 @@ class BloggerSendmailDiaglog extends this.OS.GUI.BasicDialog
|
|||||||
v.text = v.name
|
v.text = v.name
|
||||||
v.switch = true
|
v.switch = true
|
||||||
v.checked = true
|
v.checked = true
|
||||||
@maillinglist.set "items", d
|
@maillinglist. items = d
|
||||||
.catch (e) =>
|
.catch (e) =>
|
||||||
@error __("Cannot fetch subscribers data: {0}", e.toString()), e
|
@error __("Cannot fetch subscribers data: {0}", e.toString()), e
|
||||||
|
|
||||||
(@find "bt-sendmail").set "onbtclick", (e) =>
|
(@find "bt-sendmail").onbtclick = (e) =>
|
||||||
items = @maillinglist.get "items"
|
items = @maillinglist.items
|
||||||
emails = []
|
emails = []
|
||||||
for v in items
|
for v in items
|
||||||
if v.checked is true
|
if v.checked is true
|
||||||
|
@ -15,16 +15,16 @@
|
|||||||
|
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
#along with this program. If not, see https://www.gnu.org/licenses/.
|
#along with this program. If not, see https://www.gnu.org/licenses/.
|
||||||
class Blogger extends this.OS.GUI.BaseApplication
|
class Blogger extends this.OS.application.BaseApplication
|
||||||
constructor: (args) ->
|
constructor: (args) ->
|
||||||
super "Blogger", args
|
super "Blogger", args
|
||||||
|
|
||||||
main: () ->
|
main: () ->
|
||||||
@user = {}
|
@user = {}
|
||||||
@cvlist = @find "cv-list"
|
@cvlist = @find "cv-list"
|
||||||
@cvlist.set "ontreeselect", (d) =>
|
@cvlist.ontreeselect = (d) =>
|
||||||
return unless d
|
return unless d
|
||||||
data = d.data.item.get "data"
|
data = d.data.item.data
|
||||||
@CVSectionByCID Number(data.id)
|
@CVSectionByCID Number(data.id)
|
||||||
|
|
||||||
@inputtags = @.find "input-tags"
|
@inputtags = @.find "input-tags"
|
||||||
@ -38,13 +38,13 @@ class Blogger extends this.OS.GUI.BaseApplication
|
|||||||
|
|
||||||
|
|
||||||
@tabcontainer = @find "tabcontainer"
|
@tabcontainer = @find "tabcontainer"
|
||||||
@tabcontainer.set "ontabselect", (e) =>
|
@tabcontainer.ontabselect = (e) =>
|
||||||
@fetchData e.data.container.aid()
|
@fetchData e.data.container.aid
|
||||||
|
|
||||||
(@find "bt-user-save").set "onbtclick", (e) =>
|
(@find "bt-user-save").onbtclick = (e) =>
|
||||||
@saveUser()
|
@saveUser()
|
||||||
|
|
||||||
(@find "cv-cat-add").set "onbtclick", (e) =>
|
(@find "cv-cat-add").onbtclick = (e) =>
|
||||||
@fetchCVCat().then (tree) =>
|
@fetchCVCat().then (tree) =>
|
||||||
@openDialog(new BloggerCategoryDialog(), {
|
@openDialog(new BloggerCategoryDialog(), {
|
||||||
title: __("Add category"),
|
title: __("Add category"),
|
||||||
@ -61,10 +61,10 @@ class Blogger extends this.OS.GUI.BaseApplication
|
|||||||
.catch (e) => @error e.toString(), e
|
.catch (e) => @error e.toString(), e
|
||||||
.catch (e) => @error __("Unable to fetch categories"), e
|
.catch (e) => @error __("Unable to fetch categories"), e
|
||||||
|
|
||||||
(@find "cv-cat-edit").set "onbtclick", (e) =>
|
(@find "cv-cat-edit").onbtclick = (e) =>
|
||||||
sel = @cvlist.get "selectedItem"
|
sel = @cvlist.selectedItem
|
||||||
return unless sel
|
return unless sel
|
||||||
cat = sel.get "data"
|
cat = sel.data
|
||||||
return unless cat
|
return unless cat
|
||||||
@fetchCVCat().then (tree) =>
|
@fetchCVCat().then (tree) =>
|
||||||
@openDialog(new BloggerCategoryDialog(), {
|
@openDialog(new BloggerCategoryDialog(), {
|
||||||
@ -84,10 +84,10 @@ class Blogger extends this.OS.GUI.BaseApplication
|
|||||||
@error __("Cannot Edit category"), e
|
@error __("Cannot Edit category"), e
|
||||||
.catch (e) => @error __("Unable to fetch categories"), e
|
.catch (e) => @error __("Unable to fetch categories"), e
|
||||||
|
|
||||||
(@find "cv-cat-del").set "onbtclick", (e) =>
|
(@find "cv-cat-del").onbtclick = (e) =>
|
||||||
sel = @cvlist.get "selectedItem"
|
sel = @cvlist.selectedItem
|
||||||
return unless sel
|
return unless sel
|
||||||
cat = sel.get "data"
|
cat = sel.data
|
||||||
return unless cat
|
return unless cat
|
||||||
@openDialog("YesNoDialog", {
|
@openDialog("YesNoDialog", {
|
||||||
title: __("Delete category") ,
|
title: __("Delete category") ,
|
||||||
@ -98,10 +98,10 @@ class Blogger extends this.OS.GUI.BaseApplication
|
|||||||
@deleteCVCat cat
|
@deleteCVCat cat
|
||||||
.catch (e) => @error e.toString(), e
|
.catch (e) => @error e.toString(), e
|
||||||
|
|
||||||
(@find "cv-sec-add").set "onbtclick", (e) =>
|
(@find "cv-sec-add").onbtclick = (e) =>
|
||||||
sel = @cvlist.get "selectedItem"
|
sel = @cvlist.selectedItem
|
||||||
return unless sel
|
return unless sel
|
||||||
cat = sel.get "data"
|
cat = sel.data
|
||||||
return @notify __("Please select a category") unless cat and cat.id isnt "0"
|
return @notify __("Please select a category") unless cat and cat.id isnt "0"
|
||||||
@openDialog(new BloggerCVSectionDiaglog(@), {
|
@openDialog(new BloggerCVSectionDiaglog(@), {
|
||||||
title: __("New section entry for {0}", cat.name)
|
title: __("New section entry for {0}", cat.name)
|
||||||
@ -115,10 +115,10 @@ class Blogger extends this.OS.GUI.BaseApplication
|
|||||||
@CVSectionByCID Number(cat.id)
|
@CVSectionByCID Number(cat.id)
|
||||||
.catch (e) => @error __("Cannot save section: {0}", e.toString()), e
|
.catch (e) => @error __("Cannot save section: {0}", e.toString()), e
|
||||||
|
|
||||||
(@find "cv-sec-move").set "onbtclick", (e) =>
|
(@find "cv-sec-move").onbtclick = (e) =>
|
||||||
sel = (@find "cv-sec-list").get "selectedItem"
|
sel = (@find "cv-sec-list").selectedItem
|
||||||
return @notify __("Please select a section to move") unless sel
|
return @notify __("Please select a section to move") unless sel
|
||||||
sec = sel.get "data"
|
sec = sel.data
|
||||||
|
|
||||||
@fetchCVCat().then (tree) =>
|
@fetchCVCat().then (tree) =>
|
||||||
@openDialog(new BloggerCategoryDialog(),{
|
@openDialog(new BloggerCategoryDialog(),{
|
||||||
@ -136,10 +136,10 @@ class Blogger extends this.OS.GUI.BaseApplication
|
|||||||
(@find "cv-sec-list").unselect()
|
(@find "cv-sec-list").unselect()
|
||||||
.catch (e) => @error __("Cannot move section"), e
|
.catch (e) => @error __("Cannot move section"), e
|
||||||
|
|
||||||
(@find "cv-sec-edit").set "onbtclick", (e) =>
|
(@find "cv-sec-edit").onbtclick = (e) =>
|
||||||
sel = (@find "cv-sec-list").get "selectedItem"
|
sel = (@find "cv-sec-list").selectedItem
|
||||||
return @notify __("Please select a section to edit") unless sel
|
return @notify __("Please select a section to edit") unless sel
|
||||||
sec = sel.get "data"
|
sec = sel.data
|
||||||
@openDialog(new BloggerCVSectionDiaglog(@), {
|
@openDialog(new BloggerCVSectionDiaglog(@), {
|
||||||
title: __("Modify section entry"),
|
title: __("Modify section entry"),
|
||||||
section: sec
|
section: sec
|
||||||
@ -153,10 +153,9 @@ class Blogger extends this.OS.GUI.BaseApplication
|
|||||||
@CVSectionByCID Number(sec.cid)
|
@CVSectionByCID Number(sec.cid)
|
||||||
.catch (e) => return @error __("Cannot save section: {0}", e.toString()), e
|
.catch (e) => return @error __("Cannot save section: {0}", e.toString()), e
|
||||||
|
|
||||||
@seclist .set "onitemclose", (e) =>
|
@seclist.onitemclose = (e) =>
|
||||||
return unless e
|
return unless e
|
||||||
data = e.data.item.get "data"
|
data = e.data.item.data
|
||||||
console.log data
|
|
||||||
@openDialog("YesNoDialog", {
|
@openDialog("YesNoDialog", {
|
||||||
iconclass: "fa fa-question-circle",
|
iconclass: "fa fa-question-circle",
|
||||||
text: __("Do you really want to delete: {0}?", data.title)
|
text: __("Do you really want to delete: {0}?", data.title)
|
||||||
@ -164,7 +163,7 @@ class Blogger extends this.OS.GUI.BaseApplication
|
|||||||
return unless b
|
return unless b
|
||||||
@cvsecdb.delete data.id
|
@cvsecdb.delete data.id
|
||||||
.then (r) =>
|
.then (r) =>
|
||||||
@seclist.remove e.data.item
|
@seclist.delete e.data.item
|
||||||
.catch (e) => @error __("Cannot delete the section: {0}", e.toString()), e
|
.catch (e) => @error __("Cannot delete the section: {0}", e.toString()), e
|
||||||
return false
|
return false
|
||||||
|
|
||||||
@ -227,35 +226,35 @@ class Blogger extends this.OS.GUI.BaseApplication
|
|||||||
name: __("Send mail"),
|
name: __("Send mail"),
|
||||||
className: "fa fa-paper-plane",
|
className: "fa fa-paper-plane",
|
||||||
action: (e) =>
|
action: (e) =>
|
||||||
sel = @bloglist.get "selectedItem"
|
sel = @bloglist.selectedItem
|
||||||
return @error __("No post selected") unless sel
|
return @error __("No post selected") unless sel
|
||||||
data = sel.get "data"
|
data = sel.data
|
||||||
@openDialog(new BloggerSendmailDiaglog(@), {
|
@openDialog(new BloggerSendmailDiaglog(@), {
|
||||||
title: __("Send mail"),
|
title: __("Send mail"),
|
||||||
content: @editor.value(),
|
content: @editor.value(),
|
||||||
id: data.id
|
id: data.id
|
||||||
})
|
})
|
||||||
.then (d) ->
|
.then (d) ->
|
||||||
console.log "test"
|
console.log "Email sent"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@bloglist.set "onlistselect", (e) =>
|
@bloglist.onlistselect = (e) =>
|
||||||
el = @bloglist.get "selectedItem"
|
el = @bloglist.selectedItem
|
||||||
return unless el
|
return unless el
|
||||||
sel = el.get "data"
|
sel = el.data
|
||||||
return unless sel
|
return unless sel
|
||||||
@blogdb.get Number(sel.id)
|
@blogdb.get Number(sel.id)
|
||||||
.then (r) =>
|
.then (r) =>
|
||||||
@editor.value atob(r.content)
|
@editor.value atob(r.content)
|
||||||
@inputtags.value = r.tags
|
@inputtags.value = r.tags
|
||||||
(@find "blog-publish").set "swon", (if Number(r.publish) then true else false)
|
(@find "blog-publish").swon = if Number(r.publish) then true else false
|
||||||
.catch (e) =>
|
.catch (e) =>
|
||||||
@error __("Cannot fetch the entry content"), e
|
@error __("Cannot fetch the entry content"), e
|
||||||
|
|
||||||
@bloglist.set "onitemclose", (e) =>
|
@bloglist.onitemclose = (e) =>
|
||||||
return unless e
|
return unless e
|
||||||
el = e.data.item
|
el = e.data.item
|
||||||
data = el.get "data"
|
data = el.data
|
||||||
@openDialog("YesNoDialog", {
|
@openDialog("YesNoDialog", {
|
||||||
title: __("Delete a post"),
|
title: __("Delete a post"),
|
||||||
iconclass: "fa fa-question-circle",
|
iconclass: "fa fa-question-circle",
|
||||||
@ -264,15 +263,15 @@ class Blogger extends this.OS.GUI.BaseApplication
|
|||||||
return unless b
|
return unless b
|
||||||
@blogdb.delete data.id
|
@blogdb.delete data.id
|
||||||
.then (r) =>
|
.then (r) =>
|
||||||
@bloglist.remove el
|
@bloglist.delete el
|
||||||
@bloglist.unselect()
|
@bloglist.unselect()
|
||||||
@clearEditor()
|
@clearEditor()
|
||||||
return false
|
return false
|
||||||
|
|
||||||
|
|
||||||
@bindKey "CTRL-S", () =>
|
@bindKey "CTRL-S", () =>
|
||||||
sel = @tabcontainer.get "selectedTab"
|
sel = @tabcontainer.selectedTab
|
||||||
return unless sel and sel.container.aid() is "blog-container"
|
return unless sel and sel.container.aid is "blog-container"
|
||||||
@saveBlog()
|
@saveBlog()
|
||||||
@on "vboxchange", () =>
|
@on "vboxchange", () =>
|
||||||
@resizeContent()
|
@resizeContent()
|
||||||
@ -310,14 +309,14 @@ class Blogger extends this.OS.GUI.BaseApplication
|
|||||||
# PORFOLIO TAB
|
# PORFOLIO TAB
|
||||||
refreshCVCat: () ->
|
refreshCVCat: () ->
|
||||||
@fetchCVCat().then (data) =>
|
@fetchCVCat().then (data) =>
|
||||||
@cvlist.set "data", data
|
@cvlist.data = data
|
||||||
@cvlist.expandAll()
|
@cvlist.expandAll()
|
||||||
.catch (e) => @error __("Unable to load categories"), e
|
.catch (e) => @error __("Unable to load categories"), e
|
||||||
|
|
||||||
fetchCVCat: () ->
|
fetchCVCat: () ->
|
||||||
new Promise (resolve, reject) =>
|
new Promise (resolve, reject) =>
|
||||||
data =
|
data =
|
||||||
name: "Porfolio",
|
text: "Porfolio",
|
||||||
id:"0",
|
id:"0",
|
||||||
nodes: []
|
nodes: []
|
||||||
cnd =
|
cnd =
|
||||||
@ -336,6 +335,7 @@ class Blogger extends this.OS.GUI.BaseApplication
|
|||||||
return data.nodes = null if result.length is 0
|
return data.nodes = null if result.length is 0
|
||||||
for v in result
|
for v in result
|
||||||
v.nodes = []
|
v.nodes = []
|
||||||
|
v.text = v.name
|
||||||
@catListToTree table, v, v.id
|
@catListToTree table, v, v.id
|
||||||
#v.nodes = null if v.nodes.length is 0
|
#v.nodes = null if v.nodes.length is 0
|
||||||
data.nodes.push v
|
data.nodes.push v
|
||||||
@ -354,7 +354,7 @@ class Blogger extends this.OS.GUI.BaseApplication
|
|||||||
cond = ({ "=": { id: v } } for v in ids)
|
cond = ({ "=": { id: v } } for v in ids)
|
||||||
@cvcatdb.delete({ "or": cond }).then (re) =>
|
@cvcatdb.delete({ "or": cond }).then (re) =>
|
||||||
@refreshCVCat()
|
@refreshCVCat()
|
||||||
@seclist.set "data", []
|
@seclist.data=[]
|
||||||
.catch (e) =>
|
.catch (e) =>
|
||||||
@error __("Cannot delete the category: {0} [{1}]", cat.name, e.toString()), e
|
@error __("Cannot delete the category: {0} [{1}]", cat.name, e.toString()), e
|
||||||
.catch (e) =>
|
.catch (e) =>
|
||||||
@ -369,7 +369,7 @@ class Blogger extends this.OS.GUI.BaseApplication
|
|||||||
start: "DESC"
|
start: "DESC"
|
||||||
@cvsecdb.find(cond).then (d) =>
|
@cvsecdb.find(cond).then (d) =>
|
||||||
items = []
|
items = []
|
||||||
(@find "cv-sec-status").set "text", __("Found {0} sections", d.length)
|
(@find "cv-sec-status").text = __("Found {0} sections", d.length)
|
||||||
for v in d
|
for v in d
|
||||||
v.closable = true
|
v.closable = true
|
||||||
v.tag = "afx-blogger-cvsection-item"
|
v.tag = "afx-blogger-cvsection-item"
|
||||||
@ -378,14 +378,14 @@ class Blogger extends this.OS.GUI.BaseApplication
|
|||||||
v.start = undefined if v.start < 1000
|
v.start = undefined if v.start < 1000
|
||||||
v.end = undefined if v.end < 1000
|
v.end = undefined if v.end < 1000
|
||||||
items.push v
|
items.push v
|
||||||
@seclist.set "data", items
|
@seclist.data = items
|
||||||
.catch (e) => @error e.toString(), e
|
.catch (e) => @error e.toString(), e
|
||||||
|
|
||||||
# blog
|
# blog
|
||||||
saveBlog: () ->
|
saveBlog: () ->
|
||||||
sel = undefined
|
sel = undefined
|
||||||
selel = @bloglist.get "selectedItem"
|
selel = @bloglist.selectedItem
|
||||||
sel = selel.get "data" if selel
|
sel = selel.data if selel
|
||||||
tags = @inputtags.value
|
tags = @inputtags.value
|
||||||
content = @editor.value()
|
content = @editor.value()
|
||||||
title = (new RegExp "^#+(.*)\n", "g").exec content
|
title = (new RegExp "^#+(.*)\n", "g").exec content
|
||||||
@ -401,7 +401,7 @@ class Blogger extends this.OS.GUI.BaseApplication
|
|||||||
utime: d.timestamp()
|
utime: d.timestamp()
|
||||||
utimestr: d.toString()
|
utimestr: d.toString()
|
||||||
rendered: @process(@editor.options.previewRender(content))
|
rendered: @process(@editor.options.previewRender(content))
|
||||||
publish: if ((@find "blog-publish").get "swon") then 1 else 0
|
publish: if (@find "blog-publish").swon then 1 else 0
|
||||||
data.id = sel.id if sel
|
data.id = sel.id if sel
|
||||||
#save the data
|
#save the data
|
||||||
@blogdb.save data
|
@blogdb.save data
|
||||||
@ -438,11 +438,11 @@ class Blogger extends this.OS.GUI.BaseApplication
|
|||||||
clearEditor:() ->
|
clearEditor:() ->
|
||||||
@.editor.value ""
|
@.editor.value ""
|
||||||
@.inputtags.value = ""
|
@.inputtags.value = ""
|
||||||
(@.find "blog-publish").set "swon", false
|
(@.find "blog-publish").swon = false
|
||||||
# load blog
|
# load blog
|
||||||
loadBlogs: () ->
|
loadBlogs: () ->
|
||||||
selidx = -1
|
selidx = -1
|
||||||
el = @bloglist.get "selectedItem"
|
el = @bloglist.selectedItem
|
||||||
selidx = $(el).index()
|
selidx = $(el).index()
|
||||||
cond =
|
cond =
|
||||||
order:
|
order:
|
||||||
@ -458,12 +458,12 @@ class Blogger extends this.OS.GUI.BaseApplication
|
|||||||
@blogdb.find cond
|
@blogdb.find cond
|
||||||
.then (r) =>
|
.then (r) =>
|
||||||
v.tag = "afx-blogger-post-item" for v in r
|
v.tag = "afx-blogger-post-item" for v in r
|
||||||
@bloglist.set "data", r
|
@bloglist.data = r
|
||||||
if selidx isnt -1
|
if selidx isnt -1
|
||||||
@bloglist.set "selected", selidx
|
@bloglist.selected = selidx
|
||||||
else
|
else
|
||||||
@clearEditor()
|
@clearEditor()
|
||||||
@bloglist.set "selected", -1
|
@bloglist.selected = -1
|
||||||
.catch (e) => @error __("No post found: {0}", e.toString()), e
|
.catch (e) => @error __("No post found: {0}", e.toString()), e
|
||||||
|
|
||||||
resizeContent: () ->
|
resizeContent: () ->
|
||||||
|
@ -25,7 +25,7 @@ afx-app-window[data-id="blogger-win"] afx-hbox[data-id="user-container"] afx-lab
|
|||||||
afx-app-window .lbl-header i.label-text{
|
afx-app-window .lbl-header i.label-text{
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
afx-app-window[data-id="blogger-win"] afx-hbox[data-id="cv-container"] afx-label.cat-header{
|
afx-app-window[data-id="blogger-win"] afx-hbox[data-id="cv-container"] .cat-header{
|
||||||
border-bottom: 1px solid #cbcbcb;
|
border-bottom: 1px solid #cbcbcb;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
"author": "Xuan Sang LE",
|
"author": "Xuan Sang LE",
|
||||||
"email": "xsang.le@gmail.com"
|
"email": "xsang.le@gmail.com"
|
||||||
},
|
},
|
||||||
"version":"0.0.7-a",
|
"version":"0.0.9-a",
|
||||||
"category":"Internet",
|
"category":"Internet",
|
||||||
"iconclass":"fa fa-book",
|
"iconclass":"fa fa-book",
|
||||||
"mimes":["none"]
|
"mimes":["none"]
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
"api/sendmail.lua",
|
"api/sendmail.lua",
|
||||||
"sendmail.html",
|
"sendmail.html",
|
||||||
"package.json",
|
"package.json",
|
||||||
"README.md",
|
"katex/fonts",
|
||||||
"katex/fonts"
|
"README.md"
|
||||||
]
|
]
|
||||||
}
|
}
|
@ -1,22 +1,24 @@
|
|||||||
Ant = this
|
Ant = this
|
||||||
|
|
||||||
class CVSectionListItemTag extends this.OS.GUI.tag["afx-list-item-proto"]
|
class CVSectionListItemTag extends this.OS.GUI.tag.ListViewItemTag
|
||||||
constructor: (r, o) ->
|
constructor: () ->
|
||||||
super r, o
|
super()
|
||||||
|
|
||||||
__data__: (v) ->
|
ondatachange: () ->
|
||||||
return unless v
|
return unless @data
|
||||||
|
v = @data
|
||||||
nativel = ["content", "start", "end" ]
|
nativel = ["content", "start", "end" ]
|
||||||
@set "closable", v.closable
|
@closable = v.closable
|
||||||
for k, el of @refs
|
for k, el of @refs
|
||||||
if v[k] and v[k] isnt ""
|
if v[k] and v[k] isnt ""
|
||||||
if nativel.includes k
|
if nativel.includes k
|
||||||
$(el).text v[k]
|
$(el).text v[k]
|
||||||
else
|
else
|
||||||
el.set "text", v[k]
|
el.text = v[k]
|
||||||
|
|
||||||
__selected: (v) ->
|
reload: () ->
|
||||||
@get("data").selected = v
|
|
||||||
|
init:() ->
|
||||||
|
|
||||||
|
|
||||||
itemlayout: () ->
|
itemlayout: () ->
|
||||||
@ -31,24 +33,25 @@ class CVSectionListItemTag extends this.OS.GUI.tag["afx-list-item-proto"]
|
|||||||
{ el: "afx-label", ref: "location", class: "afx-cv-sec-loc" }
|
{ el: "afx-label", ref: "location", class: "afx-cv-sec-loc" }
|
||||||
] }
|
] }
|
||||||
|
|
||||||
this.OS.GUI.define "afx-blogger-cvsection-item", CVSectionListItemTag
|
this.OS.GUI.tag.define "afx-blogger-cvsection-item", CVSectionListItemTag
|
||||||
|
|
||||||
|
|
||||||
class BlogPostListItemTag extends this.OS.GUI.tag["afx-list-item-proto"]
|
class BlogPostListItemTag extends this.OS.GUI.tag.ListViewItemTag
|
||||||
constructor: (r, o) ->
|
constructor: () ->
|
||||||
super r, o
|
super()
|
||||||
|
|
||||||
__data__: (v) ->
|
ondatachange: (v) ->
|
||||||
return unless v
|
return unless @data
|
||||||
|
v = @data
|
||||||
v.closable = true
|
v.closable = true
|
||||||
@set "closable", v.closable
|
@closable = v.closable
|
||||||
@refs.title.set "text", v.title
|
@refs.title.text = v.title
|
||||||
@refs.ctimestr.set "text", __("Created: {0}", v.ctimestr)
|
@refs.ctimestr.text = __("Created: {0}", v.ctimestr)
|
||||||
@refs.utimestr.set "text", __("Updated: {0}", v.utimestr)
|
@refs.utimestr.text = __("Updated: {0}", v.utimestr)
|
||||||
|
|
||||||
__selected: (v) ->
|
reload: () ->
|
||||||
@get("data").selected = v
|
|
||||||
|
|
||||||
|
init:() ->
|
||||||
|
|
||||||
itemlayout: () ->
|
itemlayout: () ->
|
||||||
{ el: "div", children: [
|
{ el: "div", children: [
|
||||||
@ -57,4 +60,4 @@ class BlogPostListItemTag extends this.OS.GUI.tag["afx-list-item-proto"]
|
|||||||
{ el: "afx-label", ref: "utimestr", class: "blog-dates" },
|
{ el: "afx-label", ref: "utimestr", class: "blog-dates" },
|
||||||
] }
|
] }
|
||||||
|
|
||||||
this.OS.GUI.define "afx-blogger-post-item", BlogPostListItemTag
|
this.OS.GUI.tag.define "afx-blogger-post-item", BlogPostListItemTag
|
@ -1,3 +1,4 @@
|
|||||||
#LuaPlayground
|
#LuaPlayground
|
||||||
|
|
||||||
Application for serverside code testing and analytics tool
|
Application for serverside code testing and analytics tool.
|
||||||
|
It allows to execute lua code on the server from the browser
|
@ -1,4 +1,4 @@
|
|||||||
<afx-app-window apptitle="Lua Playground" width="500" height="400" data-id="LuaPlayground">
|
<afx-app-window apptitle="Lua Playground" width="500" height="400" data-id="Lua Playground">
|
||||||
<afx-hbox >
|
<afx-hbox >
|
||||||
<div data-id="editorea" data-width="250"></div>
|
<div data-id="editorea" data-width="250"></div>
|
||||||
<afx-resizer data-width="3"></afx-resizer>
|
<afx-resizer data-width="3"></afx-resizer>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
(function(){var e,i,n;e=class{constructor(t){this.target=t,this.el=$("<canvas>").attr("class","viewer")[0],this.offset=10,this.points=[],this.preprocess(),this.getBound(),this.prepare(),this.render()}canvasPoint(e){return new t.Point(e[0]/this.target.resolution+this.base.x,-e[1]/this.target.resolution+this.base.y)}preprocess(){return this.points=this.target.data}getBound(){var t,e,i,n,r,s,a,o;for(n={x:0,y:0},i={x:0,y:0},t=0,e=(r=this.points).length;t<e;t++)a=(s=r[t])[0]/this.target.resolution,o=s[1]/this.target.resolution,a<n.x&&(n.x=a),o<n.y&&(n.y=o),a>i.x&&(i.x=a),o>i.y&&(i.y=o);return this.bound=[n,i],this.base={x:0-this.bound[0].x+this.offset,y:this.bound[1].y+this.offset},this.width=i.x-n.x+2*this.offset,this.height=i.y-n.y+2*this.offset}drawPoint(e,i,n){return new t.Path.Circle({center:this.canvasPoint(e),radius:n,fillColor:i})}drawGrid(e,i){var n,r,s,a,o,h;for(h=this.target.resolution*e,r=Math.ceil(this.bound[0].x/e);r*e<this.bound[1].x;)a=new t.Point(r*e+this.base.x,-this.bound[0].y+this.base.y),n=new t.Point(r*e+this.base.x,-this.bound[1].y+this.base.y),(s=new t.Path).strokeColor=i,s.moveTo(a),s.lineTo(n),r++;for(r=Math.ceil(this.bound[0].y/e);r*e<this.bound[1].y;)a=new t.Point(this.bound[0].x+this.base.x,-r*e+this.base.y),n=new t.Point(this.bound[1].x+this.base.x,-r*e+this.base.y),(s=new t.Path).strokeColor=i,s.moveTo(a),s.lineTo(n),r++;return(o=new t.PointText(this.bound[0].x+this.base.x,this.base.y-this.bound[1].y+this.offset)).justification="left",o.fillColor="#494949",o.content=`Resolution: ${this.target.resolution}, grid size: ${h} mm`}drawAxis(e){var i,n,r;return(n=new t.Path).strokeColor=e,r=new t.Point(this.bound[0].x+this.base.x,this.base.y),i=new t.Point(this.bound[1].x+this.base.x,this.base.y),n.moveTo(r),n.lineTo(i),(n=new t.Path).strokeColor=e,r=new t.Point(this.base.x,-this.bound[0].y+this.base.y),i=new t.Point(this.base.x,-this.bound[1].y+this.base.y),n.moveTo(r),n.lineTo(i),this.drawPoint([0,0],e,3)}prepare(){var e;return(e=this.el.getContext("2d")).translate(this.base.x,this.base.y),e.canvas.width=this.width,e.canvas.height=this.height,t.setup(this.el)}render(){}},n=class extends e{constructor(t){super(t)}p2c(t,e){var i;return i=e*Math.PI/180,[t*Math.cos(i),t*Math.sin(i)]}preprocess(){var t,e,i,n,r,s;if("polar"!==this.target.coordinate)return this.points=this.target.data;for(this.point=[],t=0,r=[],e=0,i=(n=this.target.data).length;e<i;e++)s=n[e],this.points.push(this.p2c(s,this.target.start+t*this.target.angularResolution)),r.push(t+=1);return r}render(){var e,i,n,r,s,a,o;for(this.drawGrid(20,"#DBDBDB"),this.drawAxis("#0A84FF"),i=0,n=(s=this.points).length;i<n;i++)o=s[i],"polar"===this.target.coordinate&&((r=new t.Path).strokeColor="#c2a10e",a=this.canvasPoint([0,0]),e=this.canvasPoint(o),r.moveTo(a),r.lineTo(e)),this.drawPoint(o,"red",3);return t.view.draw()}},(i=class extends this.OS.GUI.BaseApplication{constructor(t){super("LuaPlayground",t)}main(){return this.datarea=this.find("editorea"),this.output=this.find("output"),ace.config.set("basePath","/scripts/ace"),this.editor=ace.edit(this.datarea),this.editor.setOptions({enableBasicAutocompletion:!0,enableLiveAutocompletion:!0,highlightActiveLine:!0,highlightSelectedWord:!0,behavioursEnabled:!0,wrap:!0,fontSize:"11pt",showInvisibles:!0}),this.editor.getSession().setUseWrapMode(!0),this.editor.session.setMode("ace/mode/lua"),this.editor.setTheme("ace/theme/monokai"),this.on("vboxchange",()=>this.editor.resize()),this.find("log-clear").set("onbtclick",t=>this.log("clean")),this.find("code-run").set("onbtclick",t=>this.run()),this.find("code-stop").set("onbtclick",t=>{if(this.socket)return this.socket.close()}),this.socket=null,this.bindKey("CTRL-R",()=>this.run())}menu(){return[{text:"__(Code)",child:[{text:"__(Run)",dataid:this.name+"-Run",shortcut:"C-R"}],onchildselect:t=>this.run()}]}log(t,e){var i;return"clean"===t?$(this.output).empty():(i=$("<p>").attr("class",t.toLowerCase())[0],$(i).html(`${t}: ${e.__()}`),$(this.output).append(i),$(this.output).scrollTop(this.output.scrollHeight))}run(){var t;if((t=this.editor.getValue().trim())&&""!==t)return this.stream().then(e=>(this.socket=e,this.socket.onopen=()=>this.socket.send(JSON.stringify({code:t})),this.socket.onmessage=t=>{var e,i;if(t.data)try{if(i=JSON.parse(t.data),!this.view(i))return this.log("INFO",t.data)}catch(i){return e=i,this.log("INFO",t.data),console.log(e)}},this.socket.onclose=()=>(this.socket=null,console.log("socket closed")))).catch(t=>this.error(__("Unable to get websocket stream")))}view(t){var e,i;return!!(t&&t.type&&this[t.type])&&(e=this[t.type](t).el,i=$("<p>").attr("class","info")[0],$(i).append(e),$(this.output).append(i),$(this.output).scrollTop(this.output.scrollHeight),!0)}pc(t){return new n(t)}cleanup(t){if(this.socket)return this.socket.close()}}).dependencies=["os://scripts/ace/ace.js"],this.OS.register("LuaPlayground",i)}).call(this);
|
(function(){var e,i,n;e=class{constructor(t){this.target=t,this.el=$("<canvas>").attr("class","viewer")[0],this.offset=10,this.points=[],this.preprocess(),this.getBound(),this.prepare(),this.render()}canvasPoint(e){return new t.Point(e[0]/this.target.resolution+this.base.x,-e[1]/this.target.resolution+this.base.y)}preprocess(){return this.points=this.target.data}getBound(){var t,e,i,n,r,s,a,o;for(n={x:0,y:0},i={x:0,y:0},t=0,e=(r=this.points).length;t<e;t++)a=(s=r[t])[0]/this.target.resolution,o=s[1]/this.target.resolution,a<n.x&&(n.x=a),o<n.y&&(n.y=o),a>i.x&&(i.x=a),o>i.y&&(i.y=o);return this.bound=[n,i],this.base={x:0-this.bound[0].x+this.offset,y:this.bound[1].y+this.offset},this.width=i.x-n.x+2*this.offset,this.height=i.y-n.y+2*this.offset}drawPoint(e,i,n){return new t.Path.Circle({center:this.canvasPoint(e),radius:n,fillColor:i})}drawGrid(e,i){var n,r,s,a,o,h;for(h=this.target.resolution*e,r=Math.ceil(this.bound[0].x/e);r*e<this.bound[1].x;)a=new t.Point(r*e+this.base.x,-this.bound[0].y+this.base.y),n=new t.Point(r*e+this.base.x,-this.bound[1].y+this.base.y),(s=new t.Path).strokeColor=i,s.moveTo(a),s.lineTo(n),r++;for(r=Math.ceil(this.bound[0].y/e);r*e<this.bound[1].y;)a=new t.Point(this.bound[0].x+this.base.x,-r*e+this.base.y),n=new t.Point(this.bound[1].x+this.base.x,-r*e+this.base.y),(s=new t.Path).strokeColor=i,s.moveTo(a),s.lineTo(n),r++;return(o=new t.PointText(this.bound[0].x+this.base.x,this.base.y-this.bound[1].y+this.offset)).justification="left",o.fillColor="#494949",o.content=`Resolution: ${this.target.resolution}, grid size: ${h} mm`}drawAxis(e){var i,n,r;return(n=new t.Path).strokeColor=e,r=new t.Point(this.bound[0].x+this.base.x,this.base.y),i=new t.Point(this.bound[1].x+this.base.x,this.base.y),n.moveTo(r),n.lineTo(i),(n=new t.Path).strokeColor=e,r=new t.Point(this.base.x,-this.bound[0].y+this.base.y),i=new t.Point(this.base.x,-this.bound[1].y+this.base.y),n.moveTo(r),n.lineTo(i),this.drawPoint([0,0],e,3)}prepare(){var e;return(e=this.el.getContext("2d")).translate(this.base.x,this.base.y),e.canvas.width=this.width,e.canvas.height=this.height,t.setup(this.el)}render(){}},n=class extends e{constructor(t){super(t)}p2c(t,e){var i;return i=e*Math.PI/180,[t*Math.cos(i),t*Math.sin(i)]}preprocess(){var t,e,i,n,r,s;if("polar"!==this.target.coordinate)return this.points=this.target.data;for(this.point=[],t=0,r=[],e=0,i=(n=this.target.data).length;e<i;e++)s=n[e],this.points.push(this.p2c(s,this.target.start+t*this.target.angularResolution)),r.push(t+=1);return r}render(){var e,i,n,r,s,a,o;for(this.drawGrid(20,"#DBDBDB"),this.drawAxis("#0A84FF"),i=0,n=(s=this.points).length;i<n;i++)o=s[i],"polar"===this.target.coordinate&&((r=new t.Path).strokeColor="#c2a10e",a=this.canvasPoint([0,0]),e=this.canvasPoint(o),r.moveTo(a),r.lineTo(e)),this.drawPoint(o,"red",3);return t.view.draw()}},(i=class extends this.OS.application.BaseApplication{constructor(t){super("LuaPlayground",t)}main(){return this.datarea=this.find("editorea"),this.output=this.find("output"),ace.config.set("basePath","/scripts/ace"),this.editor=ace.edit(this.datarea),this.editor.setOptions({enableBasicAutocompletion:!0,enableLiveAutocompletion:!0,highlightActiveLine:!0,highlightSelectedWord:!0,behavioursEnabled:!0,wrap:!0,fontSize:"11pt",showInvisibles:!0}),this.editor.getSession().setUseWrapMode(!0),this.editor.session.setMode("ace/mode/lua"),this.editor.setTheme("ace/theme/monokai"),this.on("vboxchange",()=>this.editor.resize()),this.find("log-clear").onbtclick=t=>this.log("clean"),this.find("code-run").onbtclick=t=>this.run(),this.find("code-stop").onbtclick=t=>{if(this.socket)return this.socket.close()},this.socket=null,this.bindKey("CTRL-R",()=>this.run())}menu(){return[{text:"__(Code)",nodes:[{text:"__(Run)",dataid:this.name+"-Run",shortcut:"C-R"}],onchildselect:t=>this.run()}]}log(t,e){var i;return"clean"===t?$(this.output).empty():(i=$("<p>").attr("class",t.toLowerCase())[0],$(i).html(`${t}: ${e.__()}`),$(this.output).append(i),$(this.output).scrollTop(this.output.scrollHeight))}run(){var t;if((t=this.editor.getValue().trim())&&""!==t)return this.stream().then(e=>(this.socket=e,this.socket.onopen=()=>this.socket.send(JSON.stringify({code:t})),this.socket.onmessage=t=>{var e,i;if(t.data)try{if(i=JSON.parse(t.data),!this.view(i))return this.log("INFO",t.data)}catch(i){return e=i,this.log("INFO",t.data),console.log(e)}},this.socket.onclose=()=>(this.socket=null,console.log("socket closed")))).catch(t=>this.error(__("Unable to get websocket stream")))}view(t){var e,i;return!!(t&&t.type&&this[t.type])&&(e=this[t.type](t).el,i=$("<p>").attr("class","info")[0],$(i).append(e),$(this.output).append(i),$(this.output).scrollTop(this.output.scrollHeight),!0)}pc(t){return new n(t)}cleanup(t){if(this.socket)return this.socket.close()}}).dependencies=["os://scripts/ace/ace.js"],this.OS.register("LuaPlayground",i)}).call(this);
|
||||||
/*!
|
/*!
|
||||||
* Paper.js v0.12.0 - The Swiss Army Knife of Vector Graphics Scripting.
|
* Paper.js v0.12.0 - The Swiss Army Knife of Vector Graphics Scripting.
|
||||||
* http://paperjs.org/
|
* http://paperjs.org/
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
"author": "Xuan Sang LEs",
|
"author": "Xuan Sang LEs",
|
||||||
"email": "xsang.le@gmail.com"
|
"email": "xsang.le@gmail.com"
|
||||||
},
|
},
|
||||||
"version":"0.0.3-a",
|
"version":"0.0.4-a",
|
||||||
"category":"System",
|
"category":"System",
|
||||||
"iconclass":"fa fa-adn",
|
"iconclass":"fa fa-adn",
|
||||||
"mimes":["none"]
|
"mimes":["none"]
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<afx-app-window apptitle="Lua Playground" width="500" height="400" data-id="LuaPlayground">
|
<afx-app-window apptitle="Lua Playground" width="500" height="400" data-id="Lua Playground">
|
||||||
<afx-hbox >
|
<afx-hbox >
|
||||||
<div data-id="editorea" data-width="250"></div>
|
<div data-id="editorea" data-width="250"></div>
|
||||||
<afx-resizer data-width="3"></afx-resizer>
|
<afx-resizer data-width="3"></afx-resizer>
|
||||||
|
Binary file not shown.
@ -142,7 +142,7 @@ class PointCloudViewer extends DataViewer
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
class LuaPlayground extends this.OS.GUI.BaseApplication
|
class LuaPlayground extends this.OS.application.BaseApplication
|
||||||
constructor: ( args ) ->
|
constructor: ( args ) ->
|
||||||
super "LuaPlayground", args
|
super "LuaPlayground", args
|
||||||
|
|
||||||
@ -166,12 +166,12 @@ class LuaPlayground extends this.OS.GUI.BaseApplication
|
|||||||
@editor.setTheme "ace/theme/monokai"
|
@editor.setTheme "ace/theme/monokai"
|
||||||
@on "vboxchange", () =>
|
@on "vboxchange", () =>
|
||||||
@editor.resize()
|
@editor.resize()
|
||||||
(@find "log-clear").set "onbtclick", (e) =>
|
(@find "log-clear").onbtclick = (e) =>
|
||||||
@log "clean"
|
@log "clean"
|
||||||
(@find "code-run").set "onbtclick", (e) =>
|
(@find "code-run").onbtclick = (e) =>
|
||||||
@run()
|
@run()
|
||||||
|
|
||||||
(@find "code-stop").set "onbtclick", (e) =>
|
(@find "code-stop").onbtclick = (e) =>
|
||||||
@socket.close() if @socket
|
@socket.close() if @socket
|
||||||
|
|
||||||
@socket = null
|
@socket = null
|
||||||
@ -179,7 +179,7 @@ class LuaPlayground extends this.OS.GUI.BaseApplication
|
|||||||
menu: () ->
|
menu: () ->
|
||||||
menu = [{
|
menu = [{
|
||||||
text: "__(Code)",
|
text: "__(Code)",
|
||||||
child: [
|
nodes: [
|
||||||
{ text: "__(Run)", dataid: "#{@name}-Run", shortcut: "C-R" }
|
{ text: "__(Run)", dataid: "#{@name}-Run", shortcut: "C-R" }
|
||||||
],
|
],
|
||||||
onchildselect: (e) => @run()
|
onchildselect: (e) => @run()
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
"author": "Xuan Sang LEs",
|
"author": "Xuan Sang LEs",
|
||||||
"email": "xsang.le@gmail.com"
|
"email": "xsang.le@gmail.com"
|
||||||
},
|
},
|
||||||
"version":"0.0.3-a",
|
"version":"0.0.4-a",
|
||||||
"category":"System",
|
"category":"System",
|
||||||
"iconclass":"fa fa-adn",
|
"iconclass":"fa fa-adn",
|
||||||
"mimes":["none"]
|
"mimes":["none"]
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
# MarkOn markdown editor
|
# MarkOn markdown editor
|
||||||
|
|
||||||
markdown editor for antOS
|
Simple Markdown editor for antOS
|
@ -1 +1,243 @@
|
|||||||
(function(){var e;(e=class extends this.OS.GUI.BaseApplication{constructor(e){super("MarkOn",e)}main(){var e;return e=this.find("markarea"),this.container=this.find("mycontainer"),this.previewOn=!1,this.args&&this.args.length>0?this.currfile=this.args[0].path.asFileHandle():this.currfile="Untitled".asFileHandle(),this.editormux=!1,this.editor=new SimpleMDE({element:e,autoDownloadFontAwesome:!1,autofocus:!0,tabSize:4,indentWithTabs:!0,toolbar:["bold","italic","heading","|","quote","code","unordered-list","ordered-list","|","link","image","table","horizontal-rule","|",{name:"preview",className:"fa fa-eye no-disable",action:e=>(this.previewOn=!this.previewOn,SimpleMDE.togglePreview(e))}]}),this.editor.codemirror.on("change",()=>{if(!this.editormux)return!1===this.currfile.dirty?(this.currfile.dirty=!0,this.scheme.set("apptitle",this.currfile.basename+"*")):void 0}),this.on("hboxchange",e=>this.resizeContent()),this.bindKey("ALT-N",()=>this.actionFile(this.name+"-New")),this.bindKey("ALT-O",()=>this.actionFile(this.name+"-Open")),this.bindKey("CTRL-S",()=>this.actionFile(this.name+"-Save")),this.bindKey("ALT-W",()=>this.actionFile(this.name+"-Saveas")),this.resizeContent(),this.open(this.currfile)}resizeContent(){var e,t,i,s,a;return t=$(this.container).children(),s=$(this.scheme).find(".afx-window-top")[0],a=t[1],i=t[4],e=$(this.scheme).height()-$(s).height()-$(a).height()-$(i).height()-40,$(t[2]).css("height",e+"px")}open(e){if("Untitled"!==e.path)return e.dirty=!1,e.read().then(t=>(this.currfile=e,this.editormux=!0,this.editor.value(t),this.scheme.set("apptitle",""+this.currfile.basename),this.editormux=!1)).catch(t=>this.error(__("Unable to open: {0}",e.path),t))}save(e){return e.write("text/plain").then(t=>t.error?this.error(__("Error saving file {0}: {1}",e.basename,t.error)):(e.dirty=!1,e.text=e.basename,this.scheme.set("apptitle",""+this.currfile.basename))).catch(t=>this.error(__("Unable to save file: {0}",e.path),t))}menu(){return[{text:"__(File)",child:[{text:"__(New)",dataid:this.name+"-New",shortcut:"A-N"},{text:"__(Open)",dataid:this.name+"-Open",shortcut:"A-O"},{text:"__(Save)",dataid:this.name+"-Save",shortcut:"C-S"},{text:"__(Save as)",dataid:this.name+"-Saveas",shortcut:"A-W"}],onchildselect:e=>this.actionFile(e.data.item.get("data").dataid)}]}actionFile(e){var t;switch(t=()=>this.openDialog("FileDialog",{title:__("Save as"),file:this.currfile}).then(e=>{var t;return t=e.file.path.asFileHandle(),"file"===e.file.type&&(t=t.parent()),this.currfile.setPath(`${t.path}/${e.name}`),this.save(this.currfile)}),e){case this.name+"-Open":return this.openDialog("FileDialog",{title:__("Open file")}).then(e=>this.open(e.file.path.asFileHandle()));case this.name+"-Save":return this.currfile.cache=this.editor.value(),this.currfile.basename?this.save(this.currfile):t();case this.name+"-Saveas":return this.currfile.cache=this.editor.value(),t();case this.name+"-New":return this.currfile="Untitled".asFileHandle(),this.currfile.cache="",this.editor.value("")}}cleanup(e){if(this.currfile.dirty)return e.preventDefault(),this.openDialog("YesNoDialog",{title:__("Quit"),text:__("Quit without saving ?")}).then(e=>{if(e)return this.currfile.dirty=!1,this.quit()})}}).dependencies=["os://scripts/mde/simplemde.min.js","os://scripts/mde/simplemde.min.css"],this.OS.register("MarkOn",e)}).call(this);
|
(function() {
|
||||||
|
// Copyright 2017-2018 Xuan Sang LE <xsang.le AT gmail DOT com>
|
||||||
|
|
||||||
|
// AnTOS Web desktop is is licensed under the GNU General Public
|
||||||
|
// License v3.0, see the LICENCE file for more information
|
||||||
|
|
||||||
|
// This program is free software: you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU General Public License as
|
||||||
|
// published by the Free Software Foundation, either version 3 of
|
||||||
|
// the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
// General Public License for more details.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
//along with this program. If not, see https://www.gnu.org/licenses/.
|
||||||
|
var MarkOn;
|
||||||
|
|
||||||
|
MarkOn = class MarkOn extends this.OS.application.BaseApplication {
|
||||||
|
constructor(args) {
|
||||||
|
super("MarkOn", args);
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
var markarea;
|
||||||
|
markarea = this.find("markarea");
|
||||||
|
this.container = this.find("mycontainer");
|
||||||
|
this.previewOn = false;
|
||||||
|
if (this.args && this.args.length > 0) {
|
||||||
|
this.currfile = this.args[0].path.asFileHandle();
|
||||||
|
} else {
|
||||||
|
this.currfile = "Untitled".asFileHandle();
|
||||||
|
}
|
||||||
|
this.editormux = false;
|
||||||
|
this.editor = new SimpleMDE({
|
||||||
|
element: markarea,
|
||||||
|
autoDownloadFontAwesome: false,
|
||||||
|
autofocus: true,
|
||||||
|
tabSize: 4,
|
||||||
|
indentWithTabs: true,
|
||||||
|
toolbar: [
|
||||||
|
"bold",
|
||||||
|
"italic",
|
||||||
|
"heading",
|
||||||
|
"|",
|
||||||
|
"quote",
|
||||||
|
"code",
|
||||||
|
"unordered-list",
|
||||||
|
"ordered-list",
|
||||||
|
"|",
|
||||||
|
"link",
|
||||||
|
"image",
|
||||||
|
"table",
|
||||||
|
"horizontal-rule",
|
||||||
|
"|",
|
||||||
|
{
|
||||||
|
name: "preview",
|
||||||
|
className: "fa fa-eye no-disable",
|
||||||
|
action: (e) => {
|
||||||
|
this.previewOn = !this.previewOn;
|
||||||
|
return SimpleMDE.togglePreview(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
//if(self.previewOn) toggle the highlight
|
||||||
|
//{
|
||||||
|
// var container = self._scheme.find(self,"Text")
|
||||||
|
// .$element.getElementsByClassName("editor-preview");
|
||||||
|
// if(container.length == 0) return;
|
||||||
|
// var codes = container[0].getElementsByTagName('pre');
|
||||||
|
// codes.forEach(function(el){
|
||||||
|
// hljs.highlightBlock(el);
|
||||||
|
// });
|
||||||
|
// //console.log(code);
|
||||||
|
//}
|
||||||
|
this.editor.codemirror.on("change", () => {
|
||||||
|
if (this.editormux) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (this.currfile.dirty === false) {
|
||||||
|
this.currfile.dirty = true;
|
||||||
|
return this.scheme.apptitle = `${this.currfile.basename}*`;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.on("hboxchange", (e) => {
|
||||||
|
return this.resizeContent();
|
||||||
|
});
|
||||||
|
this.bindKey("ALT-N", () => {
|
||||||
|
return this.actionFile(`${this.name}-New`);
|
||||||
|
});
|
||||||
|
this.bindKey("ALT-O", () => {
|
||||||
|
return this.actionFile(`${this.name}-Open`);
|
||||||
|
});
|
||||||
|
this.bindKey("CTRL-S", () => {
|
||||||
|
return this.actionFile(`${this.name}-Save`);
|
||||||
|
});
|
||||||
|
this.bindKey("ALT-W", () => {
|
||||||
|
return this.actionFile(`${this.name}-Saveas`);
|
||||||
|
});
|
||||||
|
this.resizeContent();
|
||||||
|
return this.open(this.currfile);
|
||||||
|
}
|
||||||
|
|
||||||
|
resizeContent() {
|
||||||
|
var cheight, children, statusbar, titlebar, toolbar;
|
||||||
|
children = ($(this.container)).children();
|
||||||
|
titlebar = (($(this.scheme)).find(".afx-window-top"))[0];
|
||||||
|
toolbar = children[1];
|
||||||
|
statusbar = children[4];
|
||||||
|
cheight = ($(this.scheme)).height() - ($(titlebar)).height() - ($(toolbar)).height() - ($(statusbar)).height() - 40;
|
||||||
|
return ($(children[2])).css("height", cheight + "px");
|
||||||
|
}
|
||||||
|
|
||||||
|
open(file) {
|
||||||
|
//find table
|
||||||
|
if (file.path === "Untitled") {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
file.dirty = false;
|
||||||
|
return file.read().then((d) => {
|
||||||
|
this.currfile = file;
|
||||||
|
this.editormux = true;
|
||||||
|
this.editor.value(d);
|
||||||
|
this.scheme.apptitle = `${this.currfile.basename}`;
|
||||||
|
return this.editormux = false;
|
||||||
|
}).catch((e) => {
|
||||||
|
return this.error(__("Unable to open: {0}", file.path), e);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
save(file) {
|
||||||
|
return file.write("text/plain").then((d) => {
|
||||||
|
if (d.error) {
|
||||||
|
return this.error(__("Error saving file {0}: {1}", file.basename, d.error));
|
||||||
|
}
|
||||||
|
file.dirty = false;
|
||||||
|
file.text = file.basename;
|
||||||
|
return this.scheme.apptitle = `${this.currfile.basename}`;
|
||||||
|
}).catch((e) => {
|
||||||
|
return this.error(__("Unable to save file: {0}", file.path), e);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
menu() {
|
||||||
|
var menu;
|
||||||
|
menu = [
|
||||||
|
{
|
||||||
|
text: "__(File)",
|
||||||
|
nodes: [
|
||||||
|
{
|
||||||
|
text: "__(New)",
|
||||||
|
dataid: `${this.name}-New`,
|
||||||
|
shortcut: "A-N"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "__(Open)",
|
||||||
|
dataid: `${this.name}-Open`,
|
||||||
|
shortcut: "A-O"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "__(Save)",
|
||||||
|
dataid: `${this.name}-Save`,
|
||||||
|
shortcut: "C-S"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "__(Save as)",
|
||||||
|
dataid: `${this.name}-Saveas`,
|
||||||
|
shortcut: "A-W"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
onchildselect: (e) => {
|
||||||
|
return this.actionFile(e.data.item.data.dataid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
];
|
||||||
|
return menu;
|
||||||
|
}
|
||||||
|
|
||||||
|
actionFile(e) {
|
||||||
|
var saveas;
|
||||||
|
saveas = () => {
|
||||||
|
return this.openDialog("FileDialog", {
|
||||||
|
title: __("Save as"),
|
||||||
|
file: this.currfile
|
||||||
|
}).then((f) => {
|
||||||
|
var d;
|
||||||
|
d = f.file.path.asFileHandle();
|
||||||
|
if (f.file.type === "file") {
|
||||||
|
d = d.parent();
|
||||||
|
}
|
||||||
|
this.currfile.setPath(`${d.path}/${f.name}`);
|
||||||
|
return this.save(this.currfile);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
switch (e) {
|
||||||
|
case `${this.name}-Open`:
|
||||||
|
return this.openDialog("FileDialog", {
|
||||||
|
title: __("Open file")
|
||||||
|
}).then((f) => {
|
||||||
|
return this.open(f.file.path.asFileHandle());
|
||||||
|
});
|
||||||
|
case `${this.name}-Save`:
|
||||||
|
this.currfile.cache = this.editor.value();
|
||||||
|
if (this.currfile.basename) {
|
||||||
|
return this.save(this.currfile);
|
||||||
|
}
|
||||||
|
return saveas();
|
||||||
|
case `${this.name}-Saveas`:
|
||||||
|
this.currfile.cache = this.editor.value();
|
||||||
|
return saveas();
|
||||||
|
case `${this.name}-New`:
|
||||||
|
this.currfile = "Untitled".asFileHandle();
|
||||||
|
this.currfile.cache = "";
|
||||||
|
return this.editor.value("");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cleanup(evt) {
|
||||||
|
if (!this.currfile.dirty) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
evt.preventDefault();
|
||||||
|
return this.openDialog("YesNoDialog", {
|
||||||
|
title: __("Quit"),
|
||||||
|
text: __("Quit without saving ?")
|
||||||
|
}).then((d) => {
|
||||||
|
if (d) {
|
||||||
|
this.currfile.dirty = false;
|
||||||
|
return this.quit();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
MarkOn.dependencies = ["os://scripts/mde/simplemde.min.js", "os://scripts/mde/simplemde.min.css"];
|
||||||
|
|
||||||
|
this.OS.register("MarkOn", MarkOn);
|
||||||
|
|
||||||
|
}).call(this);
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
"author": "Xuan Sang LE",
|
"author": "Xuan Sang LE",
|
||||||
"email": "xsang.le@gmail.com"
|
"email": "xsang.le@gmail.com"
|
||||||
},
|
},
|
||||||
"version":"0.0.4-a",
|
"version":"0.0.6-a",
|
||||||
"category":"Utils",
|
"category":"Utils",
|
||||||
"iconclass":"fa fa-leanpub",
|
"iconclass":"fa fa-leanpub",
|
||||||
"mimes":["text/.*"]
|
"mimes":["text/.*"]
|
||||||
|
Binary file not shown.
@ -16,7 +16,7 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
#along with this program. If not, see https://www.gnu.org/licenses/.
|
#along with this program. If not, see https://www.gnu.org/licenses/.
|
||||||
|
|
||||||
class MarkOn extends this.OS.GUI.BaseApplication
|
class MarkOn extends this.OS.application.BaseApplication
|
||||||
constructor: (args) ->
|
constructor: (args) ->
|
||||||
super "MarkOn", args
|
super "MarkOn", args
|
||||||
|
|
||||||
@ -63,7 +63,7 @@ class MarkOn extends this.OS.GUI.BaseApplication
|
|||||||
return if @editormux
|
return if @editormux
|
||||||
if @currfile.dirty is false
|
if @currfile.dirty is false
|
||||||
@currfile.dirty = true
|
@currfile.dirty = true
|
||||||
@scheme.set "apptitle", "#{@currfile.basename}*"
|
@scheme.apptitle = "#{@currfile.basename}*"
|
||||||
@on "hboxchange", (e) => @resizeContent()
|
@on "hboxchange", (e) => @resizeContent()
|
||||||
@bindKey "ALT-N", () => @actionFile "#{@name}-New"
|
@bindKey "ALT-N", () => @actionFile "#{@name}-New"
|
||||||
@bindKey "ALT-O", () => @actionFile "#{@name}-Open"
|
@bindKey "ALT-O", () => @actionFile "#{@name}-Open"
|
||||||
@ -89,7 +89,7 @@ class MarkOn extends this.OS.GUI.BaseApplication
|
|||||||
@currfile = file
|
@currfile = file
|
||||||
@editormux = true
|
@editormux = true
|
||||||
@editor.value d
|
@editor.value d
|
||||||
@scheme.set "apptitle", "#{@currfile.basename}"
|
@scheme.apptitle = "#{@currfile.basename}"
|
||||||
@editormux = false
|
@editormux = false
|
||||||
.catch (e) => @error __("Unable to open: {0}", file.path), e
|
.catch (e) => @error __("Unable to open: {0}", file.path), e
|
||||||
|
|
||||||
@ -100,19 +100,19 @@ class MarkOn extends this.OS.GUI.BaseApplication
|
|||||||
return @error __("Error saving file {0}: {1}", file.basename, d.error) if d.error
|
return @error __("Error saving file {0}: {1}", file.basename, d.error) if d.error
|
||||||
file.dirty = false
|
file.dirty = false
|
||||||
file.text = file.basename
|
file.text = file.basename
|
||||||
@scheme.set "apptitle", "#{@currfile.basename}"
|
@scheme.apptitle = "#{@currfile.basename}"
|
||||||
.catch (e) => @error __("Unable to save file: {0}", file.path), e
|
.catch (e) => @error __("Unable to save file: {0}", file.path), e
|
||||||
|
|
||||||
menu: () ->
|
menu: () ->
|
||||||
menu = [{
|
menu = [{
|
||||||
text: "__(File)",
|
text: "__(File)",
|
||||||
child: [
|
nodes: [
|
||||||
{ text: "__(New)", dataid: "#{@name}-New", shortcut: "A-N" },
|
{ text: "__(New)", dataid: "#{@name}-New", shortcut: "A-N" },
|
||||||
{ text: "__(Open)", dataid: "#{@name}-Open", shortcut: "A-O" },
|
{ text: "__(Open)", dataid: "#{@name}-Open", shortcut: "A-O" },
|
||||||
{ text: "__(Save)", dataid: "#{@name}-Save", shortcut: "C-S" },
|
{ text: "__(Save)", dataid: "#{@name}-Save", shortcut: "C-S" },
|
||||||
{ text: "__(Save as)", dataid: "#{@name}-Saveas", shortcut: "A-W" }
|
{ text: "__(Save as)", dataid: "#{@name}-Saveas", shortcut: "A-W" }
|
||||||
],
|
],
|
||||||
onchildselect: (e) => @actionFile e.data.item.get("data").dataid
|
onchildselect: (e) => @actionFile e.data.item.data.dataid
|
||||||
}]
|
}]
|
||||||
menu
|
menu
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
"author": "Xuan Sang LE",
|
"author": "Xuan Sang LE",
|
||||||
"email": "xsang.le@gmail.com"
|
"email": "xsang.le@gmail.com"
|
||||||
},
|
},
|
||||||
"version":"0.0.4-a",
|
"version":"0.0.6-a",
|
||||||
"category":"Utils",
|
"category":"Utils",
|
||||||
"iconclass":"fa fa-leanpub",
|
"iconclass":"fa fa-leanpub",
|
||||||
"mimes":["text/.*"]
|
"mimes":["text/.*"]
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
# Preview
|
# Preview
|
||||||
|
|
||||||
Image and PDF file viewer for antOS
|
Image and PDF file viewer for AntOS
|
File diff suppressed because one or more lines are too long
@ -6,7 +6,7 @@
|
|||||||
"author": "Xuan Sang LE",
|
"author": "Xuan Sang LE",
|
||||||
"email": "xsang.le@gmail.com"
|
"email": "xsang.le@gmail.com"
|
||||||
},
|
},
|
||||||
"version":"0.0.5-a",
|
"version":"0.0.7-a",
|
||||||
"category":"Utils",
|
"category":"Utils",
|
||||||
"iconclass":"fa fa-eye",
|
"iconclass":"fa fa-eye",
|
||||||
"mimes":["[^\/]*/.*pdf", "image/.*"]
|
"mimes":["[^\/]*/.*pdf", "image/.*"]
|
||||||
|
Binary file not shown.
@ -16,7 +16,7 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
#along with this program. If not, see https://www.gnu.org/licenses/.
|
#along with this program. If not, see https://www.gnu.org/licenses/.
|
||||||
|
|
||||||
class Preview extends this.OS.GUI.BaseApplication
|
class Preview extends this.OS.application.BaseApplication
|
||||||
constructor: (args) ->
|
constructor: (args) ->
|
||||||
super "Preview", args
|
super "Preview", args
|
||||||
|
|
||||||
@ -31,18 +31,18 @@ class Preview extends this.OS.GUI.BaseApplication
|
|||||||
@btreset = @find "btreset"
|
@btreset = @find "btreset"
|
||||||
@txtpage = @find "txtpage"
|
@txtpage = @find "txtpage"
|
||||||
|
|
||||||
@zoom.set "onchange", (e) => @setViewScale e.data
|
@zoom.onvaluechange = (e) => @setViewScale e.data
|
||||||
|
|
||||||
@btreset.set "onbtclick", (e) =>
|
@btreset.onbtclick = (e) =>
|
||||||
@zoom.set "value", 100
|
@zoom.value = 100
|
||||||
@setViewScale 100
|
@setViewScale 100
|
||||||
|
|
||||||
@btnext.set "onbtclick", (e) =>
|
@btnext.onbtclick = (e) =>
|
||||||
val = parseInt $(@txtpage).val()
|
val = parseInt $(@txtpage).val()
|
||||||
return if isNaN val
|
return if isNaN val
|
||||||
$(@txtpage).val val + 1
|
$(@txtpage).val val + 1
|
||||||
@gotoPage()
|
@gotoPage()
|
||||||
@btprev.set "onbtclick", (e) =>
|
@btprev.onbtclick = (e) =>
|
||||||
val = parseInt $(@txtpage).val()
|
val = parseInt $(@txtpage).val()
|
||||||
return if isNaN val
|
return if isNaN val
|
||||||
$(@txtpage).val val - 1
|
$(@txtpage).val val - 1
|
||||||
@ -59,8 +59,8 @@ class Preview extends this.OS.GUI.BaseApplication
|
|||||||
|
|
||||||
@bindKey "ALT-O", () => @actionFile "#{@name}-Open"
|
@bindKey "ALT-O", () => @actionFile "#{@name}-Open"
|
||||||
@bindKey "CTRL-X", () => @actionFile "#{@name}-Close"
|
@bindKey "CTRL-X", () => @actionFile "#{@name}-Close"
|
||||||
@zoom.set "max", 200
|
@zoom.max = 200
|
||||||
@zoom.set "value", 100
|
@zoom.value = 100
|
||||||
@open @currfile
|
@open @currfile
|
||||||
|
|
||||||
|
|
||||||
@ -80,7 +80,7 @@ class Preview extends this.OS.GUI.BaseApplication
|
|||||||
return if isNaN(val)
|
return if isNaN(val)
|
||||||
return if val <= 0 or val > @pdf.numPages
|
return if val <= 0 or val > @pdf.numPages
|
||||||
($ @view).empty()
|
($ @view).empty()
|
||||||
@renderPDFPages val, (@zoom.get("value") / 100), false
|
@renderPDFPages val, (@zoom.value / 100), false
|
||||||
.catch (e) => @error __("Unable to render page {0}", val), e
|
.catch (e) => @error __("Unable to render page {0}", val), e
|
||||||
|
|
||||||
renderFile: () ->
|
renderFile: () ->
|
||||||
@ -89,7 +89,7 @@ class Preview extends this.OS.GUI.BaseApplication
|
|||||||
@pdf = undefined
|
@pdf = undefined
|
||||||
@img = undefined
|
@img = undefined
|
||||||
($ @view).empty()
|
($ @view).empty()
|
||||||
@zoom.set "value", 100
|
@zoom.value = 100
|
||||||
if mime.match /^[^\/]+\/.*pdf.*/g
|
if mime.match /^[^\/]+\/.*pdf.*/g
|
||||||
@renderPDF()
|
@renderPDF()
|
||||||
else if mime.match /image\/.*svg.*/g
|
else if mime.match /image\/.*svg.*/g
|
||||||
@ -209,11 +209,11 @@ class Preview extends this.OS.GUI.BaseApplication
|
|||||||
menu: () ->
|
menu: () ->
|
||||||
menu = [{
|
menu = [{
|
||||||
text: "__(File)",
|
text: "__(File)",
|
||||||
child: [
|
nodes: [
|
||||||
{ text: "__(Open)", dataid: "#{@name}-Open", shortcut: "A-O" },
|
{ text: "__(Open)", dataid: "#{@name}-Open", shortcut: "A-O" },
|
||||||
{ text: "__(Close)", dataid: "#{@name}-Close", shortcut: "C-X" },
|
{ text: "__(Close)", dataid: "#{@name}-Close", shortcut: "C-X" },
|
||||||
],
|
],
|
||||||
onchildselect: (e) => @actionFile e.data.item.get("data").dataid
|
onchildselect: (e) => @actionFile e.data.item.data.dataid
|
||||||
}]
|
}]
|
||||||
menu
|
menu
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
"author": "Xuan Sang LE",
|
"author": "Xuan Sang LE",
|
||||||
"email": "xsang.le@gmail.com"
|
"email": "xsang.le@gmail.com"
|
||||||
},
|
},
|
||||||
"version":"0.0.5-a",
|
"version":"0.0.7-a",
|
||||||
"category":"Utils",
|
"category":"Utils",
|
||||||
"iconclass":"fa fa-eye",
|
"iconclass":"fa fa-eye",
|
||||||
"mimes":["[^\/]*/.*pdf", "image/.*"]
|
"mimes":["[^\/]*/.*pdf", "image/.*"]
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<afx-app-window data-id="example-show-case" apptitle="AntOS GUI widgets" width="650" height="500">
|
<afx-app-window data-id="example-show-case" apptitle="AntOS GUI widgets" width="650" height="500">
|
||||||
<afx-vbox>
|
<afx-vbox>
|
||||||
<afx-menu data-height="30" data-id="menu" />
|
<afx-menu data-height="30" data-id="menu" />
|
||||||
<afx-tab-container data-id="tabctn" tabbarheight= "30">
|
<afx-tab-container data-id="tabctn" dir = "column" tabbarheight= "30">
|
||||||
|
|
||||||
<afx-hbox tabname="Widgets">
|
<afx-hbox tabname="Widgets">
|
||||||
<afx-vbox data-width="150">
|
<afx-vbox data-width="150">
|
||||||
|
File diff suppressed because one or more lines are too long
@ -7,7 +7,7 @@
|
|||||||
"email": "xsang.le@gmail.com",
|
"email": "xsang.le@gmail.com",
|
||||||
"licences": "GPLv3"
|
"licences": "GPLv3"
|
||||||
},
|
},
|
||||||
"version":"0.0.3-a",
|
"version":"0.0.4-a",
|
||||||
"category":"Other",
|
"category":"Other",
|
||||||
"mimes":["none"],
|
"mimes":["none"],
|
||||||
"iconclass": "fa fa-delicious",
|
"iconclass": "fa fa-delicious",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<afx-app-window data-id="example-show-case" apptitle="AntOS GUI widgets" width="650" height="500">
|
<afx-app-window data-id="example-show-case" apptitle="AntOS GUI widgets" width="650" height="500">
|
||||||
<afx-vbox>
|
<afx-vbox>
|
||||||
<afx-menu data-height="30" data-id="menu" />
|
<afx-menu data-height="30" data-id="menu" />
|
||||||
<afx-tab-container data-id="tabctn" tabbarheight= "30">
|
<afx-tab-container data-id="tabctn" dir = "column" tabbarheight= "30">
|
||||||
|
|
||||||
<afx-hbox tabname="Widgets">
|
<afx-hbox tabname="Widgets">
|
||||||
<afx-vbox data-width="150">
|
<afx-vbox data-width="150">
|
||||||
|
Binary file not shown.
@ -1,23 +1,18 @@
|
|||||||
Ant = this
|
Ant = this
|
||||||
class ShowCase extends this.OS.GUI.BaseApplication
|
class ShowCase extends this.OS.application.BaseApplication
|
||||||
constructor: (args) ->
|
constructor: (args) ->
|
||||||
super "ShowCase", args
|
super "ShowCase", args
|
||||||
|
|
||||||
main: () ->
|
main: () ->
|
||||||
|
|
||||||
bt = @find 'bttest'
|
bt = @find 'bttest'
|
||||||
bt.set "onbtclick", (e) =>
|
|
||||||
@error "test error"
|
|
||||||
|
|
||||||
@observable.on "btclick", (e) =>
|
@observable.on "btclick", (e) =>
|
||||||
@notify "button clicked"
|
@notify "button clicked"
|
||||||
|
|
||||||
@observable.on "menuselect", (e) =>
|
|
||||||
@notify e.id
|
|
||||||
|
|
||||||
list = @find 'list'
|
list = @find 'list'
|
||||||
|
|
||||||
list.set "data", [
|
list.data = [
|
||||||
{ text: "some thing with avery long text" },
|
{ text: "some thing with avery long text" },
|
||||||
{ text: "some thing 1", closable: true },
|
{ text: "some thing 1", closable: true },
|
||||||
{ text: "some thing 2", iconclass: "fa fa-camera-retro fa-lg" },
|
{ text: "some thing 2", iconclass: "fa fa-camera-retro fa-lg" },
|
||||||
@ -25,70 +20,60 @@ class ShowCase extends this.OS.GUI.BaseApplication
|
|||||||
{ text: "some thing 4" },
|
{ text: "some thing 4" },
|
||||||
{ text: "some thing 5" }
|
{ text: "some thing 5" }
|
||||||
]
|
]
|
||||||
list.unshift { text: "shifted el" }
|
|
||||||
list.set "onlistselect", (e) => @notify(e.data.items)
|
list.onlistselect = (e) => @notify(e.data.items)
|
||||||
|
|
||||||
sw = @find 'switch'
|
sw = @find 'switch'
|
||||||
sw.set "onchange", (e) =>
|
sw.onswchange = (e) =>
|
||||||
@notify e.data
|
@notify e.data
|
||||||
|
|
||||||
spin = @find 'spin'
|
spin = @find 'spin'
|
||||||
spin.set "onchange", (e) =>
|
spin.onvaluechange = (e) =>
|
||||||
@notify e.data
|
@notify e.data
|
||||||
|
|
||||||
menu = @find 'menu'
|
menu = @find 'menu'
|
||||||
menu.set "items", @menu()
|
menu.items = @menu()
|
||||||
|
|
||||||
list.contextmenuHandle = (e, m) =>
|
list.contextmenuHandle = (e, m) =>
|
||||||
m.set "items", @menu()
|
m.items = @menu()
|
||||||
m.show e
|
m.show e
|
||||||
|
|
||||||
grid = @find 'grid'
|
grid = @find 'grid'
|
||||||
grid.set "oncelldbclick", (e) =>
|
grid.oncelldbclick = (e) =>
|
||||||
@notify "on dbclick", e
|
@notify "on dbclick", e
|
||||||
grid.set "onrowselect", (e) =>
|
grid.onrowselect = (e) =>
|
||||||
@notify "on rowselect", e.data.items
|
@notify "on rowselect"
|
||||||
|
|
||||||
@observable.on "cellselect", (e) ->
|
grid.header = [{ text: "header1", width: 80 }, { text: "header2" }, { text: "header3" }]
|
||||||
console.log "observable", e
|
grid.rows = [
|
||||||
|
|
||||||
grid.set "header", [{ text: "header1", width: 80 }, { text: "header2" }, { text: "header3" }]
|
|
||||||
grid.set "rows", [
|
|
||||||
[{ text: "text 1" }, { text: "text 2" }, { text: "text 3" }],
|
[{ text: "text 1" }, { text: "text 2" }, { text: "text 3" }],
|
||||||
[{ text: "text 4" }, { text: "text 5" }, { text: "text 6" }],
|
[{ text: "text 4" }, { text: "text 5" }, { text: "text 6" }],
|
||||||
[{ text: "text 7" }, { text: "text 8" }, { text: "text 9" }],
|
[{ text: "text 7" }, { text: "text 8" }, { text: "text 9" }],
|
||||||
[{ text: "text 7" }, { text: "Subgrid on columns and rows. Subgrid on columns, implicit grid rows. Subgrid on rows, defined column tracks" }, { text: "text 9" }],
|
[{ text: "text 10" }, { text: "this is a long text" }, { text: "text 11" }]
|
||||||
[{ text: "text 7" }, { text: "text 8" }, { text: "text 9" }],
|
|
||||||
[{ text: "text 7" }, { text: "text 8" }, { text: "text 9" }],
|
|
||||||
[{ text: "text 7" }, { text: "text 8" }, { text: "text 9" }],
|
|
||||||
[{ text: "text 7" }, { text: "text 8" }, { text: "text 9" }],
|
|
||||||
[{ text: "text 7" }, { text: "text 8" }, { text: "text 9" }],
|
|
||||||
[{ text: "text 7" }, { text: "text 8" }, { text: "text 9" }],
|
|
||||||
[{ text: "text 7" }, { text: "text 8" }, { text: "text 9" }]
|
|
||||||
]
|
]
|
||||||
|
|
||||||
tdata = {
|
tdata = {
|
||||||
name: 'My Tree',
|
text: 'Tree root',
|
||||||
nodes: [
|
nodes: [
|
||||||
{ name: 'hello', iconclass:'fa fa-car'},
|
{ text: 'leaf 1', iconclass:'fa fa-car'},
|
||||||
{ name: 'wat' },
|
{ text: 'leaf 2' },
|
||||||
{
|
{
|
||||||
name: 'child folder',
|
text: 'sub tree 1',
|
||||||
nodes: [
|
nodes: [
|
||||||
{
|
{
|
||||||
name: 'child folder',
|
text: 'sub sub tree 1',
|
||||||
nodes: [
|
nodes: [
|
||||||
{ name: 'hello' },
|
{ text: 'leaf 1 of sub sub tree 1' },
|
||||||
{ name: 'wat' }
|
{ text: 'leaf 2 of sub sub tree 1' }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{ name: 'hello' },
|
{ text: 'leaf 1 of sub tree' },
|
||||||
{ name: 'wat' },
|
{ text: 'leaf 2 of sub tree' },
|
||||||
{
|
{
|
||||||
name: 'child folder',
|
text: 'sub sub tree 2',
|
||||||
nodes: [
|
nodes: [
|
||||||
{ name: 'hello' },
|
{ text: 'leaf 1 of sub sub tree 2' },
|
||||||
{ name: 'wat' }
|
{ text: 'leaf 2 of sub sub tree 2' }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -97,30 +82,28 @@ class ShowCase extends this.OS.GUI.BaseApplication
|
|||||||
}
|
}
|
||||||
|
|
||||||
tree = @find 'tree'
|
tree = @find 'tree'
|
||||||
tree.set "data", tdata
|
tree.data = tdata
|
||||||
tree.set "ontreeselect", (e) =>
|
tree.ontreeselect = (e) =>
|
||||||
@notify e.data.item.get "treepath"
|
@notify e.data.item.treepath
|
||||||
tree.set "ontreedbclick", (e) =>
|
tree.ontreedbclick = (e) =>
|
||||||
@notify "treedbclick", e
|
@notify "treedbclick"
|
||||||
@observable.on "treedbclick", (e) =>
|
@observable.on "treedbclick", (e) =>
|
||||||
@notify "observable treedbclick", e
|
@notify "observable treedbclick"
|
||||||
|
|
||||||
slider = @find 'slider'
|
slider = @find 'slider'
|
||||||
slider.set "onchange", (v) =>
|
slider.onvaluechange = (v) =>
|
||||||
@notify v
|
@notify v
|
||||||
|
|
||||||
cal = @find 'cal'
|
cal = @find 'cal'
|
||||||
cal.set "ondateselect", (e) =>
|
cal.ondateselect = (e) =>
|
||||||
@notify e
|
@notify e.data.toString()
|
||||||
|
|
||||||
pk = @find 'cpk'
|
pk = @find 'cpk'
|
||||||
pk.set "oncolorselect", (e) =>
|
pk.oncolorselect = (e) =>
|
||||||
@notify e
|
@notify JSON.stringify(e)
|
||||||
pk.set "oncolorselect", (e) =>
|
|
||||||
@notify e
|
|
||||||
|
|
||||||
fileview = @find 'fileview'
|
fileview = @find 'fileview'
|
||||||
fileview.set "fetch", (path) ->
|
fileview.fetch = (path) ->
|
||||||
new Promise (resolve, reject) ->
|
new Promise (resolve, reject) ->
|
||||||
dir = path.asFileHandle()
|
dir = path.asFileHandle()
|
||||||
dir.read().then (d) ->
|
dir.read().then (d) ->
|
||||||
@ -130,22 +113,22 @@ class ShowCase extends this.OS.GUI.BaseApplication
|
|||||||
return reject d.error if d.error
|
return reject d.error if d.error
|
||||||
d.result.unshift p
|
d.result.unshift p
|
||||||
resolve d.result
|
resolve d.result
|
||||||
fileview.set "path", "home:///"
|
fileview.path = "home:///"
|
||||||
|
|
||||||
viewoption = @find 'viewoption'
|
viewoption = @find 'viewoption'
|
||||||
viewoption.set "data", [
|
viewoption.data = [
|
||||||
{ text: "icon" },
|
{ text: "icon" },
|
||||||
{ text: "list" },
|
{ text: "list" },
|
||||||
{ text: "tree" }
|
{ text: "tree" }
|
||||||
]
|
]
|
||||||
viewoption.set "onlistselect", (e) =>
|
viewoption.onlistselect = (e) =>
|
||||||
@notify e.data.item.get("data").text
|
@notify e.data.item.data.text
|
||||||
fileview.set "view", e.data.item.get("data").text
|
fileview.view = e.data.item.data.text
|
||||||
|
|
||||||
dllist = @find "dialoglist"
|
dllist = @find "dialoglist"
|
||||||
btrun = @find "btrundia"
|
btrun = @find "btrundia"
|
||||||
|
|
||||||
dllist.set "data", [
|
dllist.data = [
|
||||||
{ text: "Prompt dialog", id: "prompt" },
|
{ text: "Prompt dialog", id: "prompt" },
|
||||||
{ text: "Calendar dialog", id: "calendar" },
|
{ text: "Calendar dialog", id: "calendar" },
|
||||||
{ text: "Color picker dialog", id: "colorpicker" },
|
{ text: "Color picker dialog", id: "colorpicker" },
|
||||||
@ -157,10 +140,10 @@ class ShowCase extends this.OS.GUI.BaseApplication
|
|||||||
{ text: "Text dialog", id: "text" }
|
{ text: "Text dialog", id: "text" }
|
||||||
]
|
]
|
||||||
|
|
||||||
btrun.set "onbtclick", (e) =>
|
btrun.onbtclick = (e) =>
|
||||||
item = dllist.get "selectedItem"
|
item = dllist.selectedItem
|
||||||
return unless item
|
return unless item
|
||||||
switch item.get("data").id
|
switch item.data.id
|
||||||
when "prompt"
|
when "prompt"
|
||||||
@openDialog("PromptDialog", {
|
@openDialog("PromptDialog", {
|
||||||
title: "Prompt review",
|
title: "Prompt review",
|
||||||
@ -171,14 +154,14 @@ class ShowCase extends this.OS.GUI.BaseApplication
|
|||||||
@notify d
|
@notify d
|
||||||
when "calendar"
|
when "calendar"
|
||||||
@openDialog("CalendarDialog", {
|
@openDialog("CalendarDialog", {
|
||||||
title: "Calendar"
|
title: "Calendar dialog"
|
||||||
})
|
})
|
||||||
.then (d) =>
|
.then (d) =>
|
||||||
@notify d
|
@notify d.toString()
|
||||||
when "colorpicker"
|
when "colorpicker"
|
||||||
@openDialog("ColorPickerDialog")
|
@openDialog("ColorPickerDialog")
|
||||||
.then (d) =>
|
.then (d) =>
|
||||||
@notify d
|
@notify JSON.stringify(d)
|
||||||
when "info"
|
when "info"
|
||||||
@openDialog("InfoDialog", {
|
@openDialog("InfoDialog", {
|
||||||
title: "Info application",
|
title: "Info application",
|
||||||
@ -233,7 +216,7 @@ class ShowCase extends this.OS.GUI.BaseApplication
|
|||||||
#@notify file
|
#@notify file
|
||||||
arr = {
|
arr = {
|
||||||
text: "__(File)",
|
text: "__(File)",
|
||||||
child: [
|
nodes: [
|
||||||
{ text: "__(New file)", dataid: "#{@name}-mkf", shortcut: 'C-F' },
|
{ text: "__(New file)", dataid: "#{@name}-mkf", shortcut: 'C-F' },
|
||||||
{ text: "__(New folder)", dataid: "#{@name}-mkdir", shortcut: 'C-D' },
|
{ text: "__(New folder)", dataid: "#{@name}-mkdir", shortcut: 'C-D' },
|
||||||
{ text: "__(Open with)", dataid: "#{@name}-open", child: @apps },
|
{ text: "__(Open with)", dataid: "#{@name}-open", child: @apps },
|
||||||
@ -241,20 +224,20 @@ class ShowCase extends this.OS.GUI.BaseApplication
|
|||||||
{ text: "__(Download)", dataid: "#{@name}-download" },
|
{ text: "__(Download)", dataid: "#{@name}-download" },
|
||||||
{ text: "__(Share file)", dataid: "#{@name}-share", shortcut: 'C-S' },
|
{ text: "__(Share file)", dataid: "#{@name}-share", shortcut: 'C-S' },
|
||||||
{ text: "__(Properties)", dataid: "#{@name}-info", shortcut: 'C-I' }
|
{ text: "__(Properties)", dataid: "#{@name}-info", shortcut: 'C-I' }
|
||||||
], onchildselect: (e) => @notify "child", e
|
], onchildselect: (e) => @notify e.data.item.data.text
|
||||||
}
|
}
|
||||||
return arr
|
return arr
|
||||||
mnEdit: () ->
|
mnEdit: () ->
|
||||||
|
|
||||||
{
|
{
|
||||||
text: "__(Edit)",
|
text: "__(Edit)",
|
||||||
child: [
|
nodes: [
|
||||||
{ text: "__(Rename)", dataid: "#{@name}-mv", shortcut: 'C-R' },
|
{ text: "__(Rename)", dataid: "#{@name}-mv", shortcut: 'C-R' },
|
||||||
{ text: "__(Delete)", dataid: "#{@name}-rm", shortcut: 'C-M' },
|
{ text: "__(Delete)", dataid: "#{@name}-rm", shortcut: 'C-M' },
|
||||||
{ text: "__(Cut)", dataid: "#{@name}-cut", shortcut: 'C-X' },
|
{ text: "__(Cut)", dataid: "#{@name}-cut", shortcut: 'C-X' },
|
||||||
{ text: "__(Copy)", dataid: "#{@name}-copy", shortcut: 'C-C' },
|
{ text: "__(Copy)", dataid: "#{@name}-copy", shortcut: 'C-C' },
|
||||||
{ text: "__(Paste)", dataid: "#{@name}-paste", shortcut: 'C-P' }
|
{ text: "__(Paste)", dataid: "#{@name}-paste", shortcut: 'C-P' }
|
||||||
], onchildselect: (e) => console.log "child", e
|
], onchildselect: (e) => @notify e.data.item.data.text
|
||||||
}
|
}
|
||||||
|
|
||||||
menu: () ->
|
menu: () ->
|
||||||
@ -263,8 +246,8 @@ class ShowCase extends this.OS.GUI.BaseApplication
|
|||||||
@mnEdit(),
|
@mnEdit(),
|
||||||
{
|
{
|
||||||
text: "__(View)",
|
text: "__(View)",
|
||||||
child: [
|
nodes: [
|
||||||
{ text: "__(Refresh)", dataid: "#{@name}-refresh", onmenuselect: (e) -> console.log "select", e },
|
{ text: "__(Refresh)", dataid: "#{@name}-refresh"},
|
||||||
{ text: "__(Sidebar)", switch: true, checked: true },
|
{ text: "__(Sidebar)", switch: true, checked: true },
|
||||||
{ text: "__(Navigation bar)", switch: true, checked: false },
|
{ text: "__(Navigation bar)", switch: true, checked: false },
|
||||||
{ text: "__(Hidden files)", switch: true, checked: true, dataid: "#{@name}-hidden" },
|
{ text: "__(Hidden files)", switch: true, checked: true, dataid: "#{@name}-hidden" },
|
||||||
@ -272,9 +255,9 @@ class ShowCase extends this.OS.GUI.BaseApplication
|
|||||||
{ text: "__(Icon view)", radio: true, checked: true, dataid: "#{@name}-icon", type: 'icon' },
|
{ text: "__(Icon view)", radio: true, checked: true, dataid: "#{@name}-icon", type: 'icon' },
|
||||||
{ text: "__(List view)", radio:true, checked: false, dataid: "#{@name}-list", type: 'list' },
|
{ text: "__(List view)", radio:true, checked: false, dataid: "#{@name}-list", type: 'list' },
|
||||||
{ text: "__(Tree view)", radio:true, checked: false, dataid: "#{@name}-tree", type: 'tree' }
|
{ text: "__(Tree view)", radio:true, checked: false, dataid: "#{@name}-tree", type: 'tree' }
|
||||||
], onchildselect: (e) -> console.log "child", e
|
], onchildselect: (e) -> @notify e.data.item.data.text
|
||||||
},
|
},
|
||||||
], onchildselect: (e) => console.log "child", e
|
], onchildselect: (e) => @notify e.data.item.data.text
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
menu
|
menu
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
"email": "xsang.le@gmail.com",
|
"email": "xsang.le@gmail.com",
|
||||||
"licences": "GPLv3"
|
"licences": "GPLv3"
|
||||||
},
|
},
|
||||||
"version":"0.0.3-a",
|
"version":"0.0.4-a",
|
||||||
"category":"Other",
|
"category":"Other",
|
||||||
"mimes":["none"],
|
"mimes":["none"],
|
||||||
"iconclass": "fa fa-delicious",
|
"iconclass": "fa fa-delicious",
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
# TinyEditor
|
# TinyEditor
|
||||||
This is the example project for the tutorial: [https://blog.lxsang.me/post/id/20](https://blog.lxsang.me/post/id/20)
|
This is the example project for the tutorial: [https://blog.lxsang.me/post/id/20](https://blog.lxsang.me/post/id/20). The tutorial is outdated, it is no longer compatible with the new antos API
|
||||||
|
|
||||||
|
@ -1 +1 @@
|
|||||||
(function(){var e;e=class extends this.OS.GUI.BaseApplication{constructor(e){super("TinyEditor",e)}main(){return this.editor=this.find("editor"),this.bindKey("ALT-N",()=>this.newFile()),this.bindKey("ALT-O",()=>this.openFile()),this.bindKey("CTRL-S",()=>this.saveFile()),this.filehandle=this.args&&this.args.length>0?this.args[0].path.asFileHandle():null,$(this.editor).on("input",e=>{if(!0!==this.filehandle.dirty)return this.filehandle.dirty=!0,this.scheme.set("apptitle",this.filehandle.path+"*")}),this.read()}menu(){return[{text:"__(File)",child:[{text:"__(New)",dataid:"new",shortcut:"A-N"},{text:"__(Open)",dataid:"open",shortcut:"A-O"},{text:"__(Save)",dataid:"save",shortcut:"C-S"}],onchildselect:e=>{switch(e.data.item.get("data").dataid){case"new":return this.newFile();case"open":return this.openFile();case"save":return this.saveFile()}}}]}newFile(){return this.filehandle=null,this.read()}openFile(){return this.openDialog("FileDialog",{title:__("Open file")}).then(e=>(this.filehandle=e.file.path.asFileHandle(),this.read()))}saveFile(){return this.filehandle.cache=this.editor.value,"Untitled"!==this.filehandle.path?this.write():this.openDialog("FileDialog",{title:__("Save as"),file:this.filehandle}).then(e=>{var t;return t=e.file.path.asFileHandle(),"file"===e.file.type&&(t=t.parent()),this.filehandle.setPath(`${t.path}/${e.name}`),this.write()})}read(){return this.editor.value="",null===this.filehandle?(this.filehandle="Untitled".asFileHandle(),void this.scheme.set("apptitle","Untitled")):this.filehandle.read().then(e=>(this.scheme.set("apptitle",this.filehandle.path),this.editor.value=e)).catch(e=>this.error(__("Unable to read file content")))}write(){return this.filehandle.write("text/plain").then(e=>(this.filehandle.dirty=!1,this.scheme.set("apptitle",""+this.filehandle.path))).catch(e=>this.error(__("Error saving file {0}",this.filehandle.path),e))}cleanup(e){if(this.filehandle.dirty)return e.preventDefault(),this.ask({title:"__(Quit)",text:"__(Quit without saving?)"}).then(()=>(this.filehandle.dirty=!1,this.quit()))}},this.OS.register("TinyEditor",e)}).call(this);
|
(function(){var e;e=class extends this.OS.application.BaseApplication{constructor(e){super("TinyEditor",e)}main(){return this.editor=this.find("editor"),this.bindKey("ALT-N",()=>this.newFile()),this.bindKey("ALT-O",()=>this.openFile()),this.bindKey("CTRL-S",()=>this.saveFile()),this.filehandle=this.args&&this.args.length>0?this.args[0].path.asFileHandle():null,$(this.editor).on("input",e=>{if(!0!==this.filehandle.dirty)return this.filehandle.dirty=!0,this.scheme.apptitle=this.filehandle.path+"*"}),this.read()}menu(){return[{text:"__(File)",nodes:[{text:"__(New)",dataid:"new",shortcut:"A-N"},{text:"__(Open)",dataid:"open",shortcut:"A-O"},{text:"__(Save)",dataid:"save",shortcut:"C-S"}],onchildselect:e=>{switch(e.data.item.data.dataid){case"new":return this.newFile();case"open":return this.openFile();case"save":return this.saveFile()}}}]}newFile(){return this.filehandle=null,this.read()}openFile(){return this.openDialog("FileDialog",{title:__("Open file")}).then(e=>(this.filehandle=e.file.path.asFileHandle(),this.read()))}saveFile(){return this.filehandle.cache=this.editor.value,"Untitled"!==this.filehandle.path?this.write():this.openDialog("FileDialog",{title:__("Save as"),file:this.filehandle}).then(e=>{var t;return t=e.file.path.asFileHandle(),"file"===e.file.type&&(t=t.parent()),this.filehandle.setPath(`${t.path}/${e.name}`),this.write()})}read(){return this.editor.value="",null===this.filehandle?(this.filehandle="Untitled".asFileHandle(),void(this.scheme.apptitle="Untitled")):this.filehandle.read().then(e=>(this.scheme.apptitle=this.filehandle.path,this.editor.value=e)).catch(e=>this.error(__("Unable to read file content")))}write(){return this.filehandle.write("text/plain").then(e=>(this.filehandle.dirty=!1,this.scheme.apptitle=""+this.filehandle.path)).catch(e=>this.error(__("Error saving file {0}",this.filehandle.path),e))}cleanup(e){if(this.filehandle.dirty)return e.preventDefault(),this.ask({title:"__(Quit)",text:"__(Quit without saving?)"}).then(e=>{if(e)return this.filehandle.dirty=!1,this.quit()})}},this.OS.register("TinyEditor",e)}).call(this);
|
@ -6,7 +6,7 @@
|
|||||||
"author": "Xuan Sang LE",
|
"author": "Xuan Sang LE",
|
||||||
"email": "xsang.le@gmail.com"
|
"email": "xsang.le@gmail.com"
|
||||||
},
|
},
|
||||||
"version":"0.0.3-a",
|
"version":"0.0.4-a",
|
||||||
"category":"Other",
|
"category":"Other",
|
||||||
"iconclass":"fa fa-adn",
|
"iconclass":"fa fa-adn",
|
||||||
"mimes":["text/.*"]
|
"mimes":["text/.*"]
|
||||||
|
Binary file not shown.
@ -1,4 +1,4 @@
|
|||||||
class TinyEditor extends this.OS.GUI.BaseApplication
|
class TinyEditor extends this.OS.application.BaseApplication
|
||||||
constructor: ( args ) ->
|
constructor: ( args ) ->
|
||||||
super "TinyEditor", args
|
super "TinyEditor", args
|
||||||
|
|
||||||
@ -11,20 +11,20 @@ class TinyEditor extends this.OS.GUI.BaseApplication
|
|||||||
$(@editor).on 'input', (e) =>
|
$(@editor).on 'input', (e) =>
|
||||||
return if @filehandle.dirty is true
|
return if @filehandle.dirty is true
|
||||||
@filehandle.dirty = true
|
@filehandle.dirty = true
|
||||||
@scheme.set "apptitle", "#{@filehandle.path}*"
|
@scheme.apptitle = "#{@filehandle.path}*"
|
||||||
@read()
|
@read()
|
||||||
|
|
||||||
menu: () ->
|
menu: () ->
|
||||||
m = [
|
m = [
|
||||||
{
|
{
|
||||||
text: "__(File)",
|
text: "__(File)",
|
||||||
child: [
|
nodes: [
|
||||||
{ text: "__(New)", dataid :"new", shortcut: 'A-N' },
|
{ text: "__(New)", dataid :"new", shortcut: 'A-N' },
|
||||||
{ text: "__(Open)", dataid :"open", shortcut: 'A-O' },
|
{ text: "__(Open)", dataid :"open", shortcut: 'A-O' },
|
||||||
{ text: "__(Save)", dataid :"save", shortcut: 'C-S' }
|
{ text: "__(Save)", dataid :"save", shortcut: 'C-S' }
|
||||||
],
|
],
|
||||||
onchildselect: (e) =>
|
onchildselect: (e) =>
|
||||||
switch e.data.item.get("data").dataid
|
switch e.data.item.data.dataid
|
||||||
when "new" then @newFile()
|
when "new" then @newFile()
|
||||||
when "open" then @openFile()
|
when "open" then @openFile()
|
||||||
when "save" then @saveFile()
|
when "save" then @saveFile()
|
||||||
@ -59,17 +59,17 @@ class TinyEditor extends this.OS.GUI.BaseApplication
|
|||||||
@editor.value = ""
|
@editor.value = ""
|
||||||
if @filehandle is null
|
if @filehandle is null
|
||||||
@filehandle = "Untitled".asFileHandle()
|
@filehandle = "Untitled".asFileHandle()
|
||||||
@scheme.set "apptitle", "Untitled"
|
@scheme.apptitle = "Untitled"
|
||||||
return
|
return
|
||||||
@filehandle.read().then (d) =>
|
@filehandle.read().then (d) =>
|
||||||
@scheme.set "apptitle", @filehandle.path
|
@scheme.apptitle = @filehandle.path
|
||||||
@editor.value = d
|
@editor.value = d
|
||||||
.catch (e) => @error __("Unable to read file content")
|
.catch (e) => @error __("Unable to read file content")
|
||||||
|
|
||||||
write: () ->
|
write: () ->
|
||||||
@filehandle.write("text/plain").then (d) =>
|
@filehandle.write("text/plain").then (d) =>
|
||||||
@filehandle.dirty = false
|
@filehandle.dirty = false
|
||||||
@scheme.set "apptitle", "#{@filehandle.path}"
|
@scheme.apptitle = "#{@filehandle.path}"
|
||||||
.catch (e) => @error __("Error saving file {0}", @filehandle.path), e
|
.catch (e) => @error __("Error saving file {0}", @filehandle.path), e
|
||||||
|
|
||||||
|
|
||||||
@ -77,7 +77,8 @@ class TinyEditor extends this.OS.GUI.BaseApplication
|
|||||||
return unless @filehandle.dirty
|
return unless @filehandle.dirty
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
@ask { title: "__(Quit)", text: "__(Quit without saving?)" }
|
@ask { title: "__(Quit)", text: "__(Quit without saving?)" }
|
||||||
.then () =>
|
.then (d) =>
|
||||||
|
return unless d
|
||||||
@filehandle.dirty = false
|
@filehandle.dirty = false
|
||||||
@quit()
|
@quit()
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
"author": "Xuan Sang LE",
|
"author": "Xuan Sang LE",
|
||||||
"email": "xsang.le@gmail.com"
|
"email": "xsang.le@gmail.com"
|
||||||
},
|
},
|
||||||
"version":"0.0.3-a",
|
"version":"0.0.4-a",
|
||||||
"category":"Other",
|
"category":"Other",
|
||||||
"iconclass":"fa fa-adn",
|
"iconclass":"fa fa-adn",
|
||||||
"mimes":["text/.*"]
|
"mimes":["text/.*"]
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
"description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/About/README.md",
|
"description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/About/README.md",
|
||||||
"category": "Other",
|
"category": "Other",
|
||||||
"author": "Xuan Sang LE",
|
"author": "Xuan Sang LE",
|
||||||
"version": "0.0.2-a",
|
"version": "0.0.3-a",
|
||||||
"download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/About/build/release/About.zip"
|
"download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/About/build/release/About.zip"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -14,7 +14,7 @@
|
|||||||
"description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/ActivityMonitor/README.md",
|
"description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/ActivityMonitor/README.md",
|
||||||
"category": "System",
|
"category": "System",
|
||||||
"author": "Xuan Sang LE",
|
"author": "Xuan Sang LE",
|
||||||
"version": "0.0.2-a",
|
"version": "0.0.4-a",
|
||||||
"download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/ActivityMonitor/build/release/ActivityMonitor.zip"
|
"download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/ActivityMonitor/build/release/ActivityMonitor.zip"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -23,7 +23,7 @@
|
|||||||
"description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/Blogger/README.md",
|
"description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/Blogger/README.md",
|
||||||
"category": "Internet",
|
"category": "Internet",
|
||||||
"author": "Xuan Sang LE",
|
"author": "Xuan Sang LE",
|
||||||
"version": "0.0.7-a",
|
"version": "0.0.9-a",
|
||||||
"download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/Blogger/build/release/Blogger.zip"
|
"download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/Blogger/build/release/Blogger.zip"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -32,7 +32,7 @@
|
|||||||
"description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/LuaPlayground/README.md",
|
"description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/LuaPlayground/README.md",
|
||||||
"category": "System",
|
"category": "System",
|
||||||
"author": "Xuan Sang LEs",
|
"author": "Xuan Sang LEs",
|
||||||
"version": "0.0.3-a",
|
"version": "0.0.4-a",
|
||||||
"download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/LuaPlayground/build/release/LuaPlayground.zip"
|
"download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/LuaPlayground/build/release/LuaPlayground.zip"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -41,7 +41,7 @@
|
|||||||
"description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/MarkOn/README.md",
|
"description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/MarkOn/README.md",
|
||||||
"category": "Utils",
|
"category": "Utils",
|
||||||
"author": "Xuan Sang LE",
|
"author": "Xuan Sang LE",
|
||||||
"version": "0.0.4-a",
|
"version": "0.0.6-a",
|
||||||
"download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/MarkOn/build/release/MarkOn.zip"
|
"download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/MarkOn/build/release/MarkOn.zip"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -50,7 +50,7 @@
|
|||||||
"description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/Preview/README.md",
|
"description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/Preview/README.md",
|
||||||
"category": "Utils",
|
"category": "Utils",
|
||||||
"author": "Xuan Sang LE",
|
"author": "Xuan Sang LE",
|
||||||
"version": "0.0.5-a",
|
"version": "0.0.7-a",
|
||||||
"download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/Preview/build/release/Preview.zip"
|
"download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/Preview/build/release/Preview.zip"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -59,7 +59,7 @@
|
|||||||
"description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/ShowCase/README.md",
|
"description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/ShowCase/README.md",
|
||||||
"category": "Other",
|
"category": "Other",
|
||||||
"author": "Xuan Sang LE",
|
"author": "Xuan Sang LE",
|
||||||
"version": "0.0.3-a",
|
"version": "0.0.4-a",
|
||||||
"download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/ShowCase/build/release/ShowCase.zip"
|
"download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/ShowCase/build/release/ShowCase.zip"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -68,7 +68,7 @@
|
|||||||
"description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/TinyEditor/README.md",
|
"description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/TinyEditor/README.md",
|
||||||
"category": "Other",
|
"category": "Other",
|
||||||
"author": "Xuan Sang LE",
|
"author": "Xuan Sang LE",
|
||||||
"version": "0.0.3-a",
|
"version": "0.0.4-a",
|
||||||
"download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/TinyEditor/build/release/TinyEditor.zip"
|
"download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/TinyEditor/build/release/TinyEditor.zip"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -77,7 +77,7 @@
|
|||||||
"description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/wTerm/README.md",
|
"description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/wTerm/README.md",
|
||||||
"category": "System",
|
"category": "System",
|
||||||
"author": "Xuan Sang LE",
|
"author": "Xuan Sang LE",
|
||||||
"version": "0.0.4-a",
|
"version": "0.0.5-a",
|
||||||
"download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/wTerm/build/release/wTerm.zip"
|
"download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/wTerm/build/release/wTerm.zip"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
File diff suppressed because one or more lines are too long
@ -6,7 +6,7 @@
|
|||||||
"author": "Xuan Sang LE",
|
"author": "Xuan Sang LE",
|
||||||
"email": "xsang.le@gmail.com"
|
"email": "xsang.le@gmail.com"
|
||||||
},
|
},
|
||||||
"version":"0.0.4-a",
|
"version":"0.0.5-a",
|
||||||
"category":"System",
|
"category":"System",
|
||||||
"iconclass":"fa fa-terminal",
|
"iconclass":"fa fa-terminal",
|
||||||
"mimes":["none"],
|
"mimes":["none"],
|
||||||
|
Binary file not shown.
@ -16,7 +16,7 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
#along with this program. If not, see https://www.gnu.org/licenses/
|
#along with this program. If not, see https://www.gnu.org/licenses/
|
||||||
|
|
||||||
class wTerm extends this.OS.GUI.BaseApplication
|
class wTerm extends this.OS.application.BaseApplication
|
||||||
constructor: (args) ->
|
constructor: (args) ->
|
||||||
super "wTerm", args
|
super "wTerm", args
|
||||||
|
|
||||||
@ -35,13 +35,13 @@ class wTerm extends this.OS.GUI.BaseApplication
|
|||||||
@on "focus", () => @term.focus()
|
@on "focus", () => @term.focus()
|
||||||
|
|
||||||
@mterm.contextmenuHandle = (e, m) =>
|
@mterm.contextmenuHandle = (e, m) =>
|
||||||
m.set "items", [
|
m.items = [
|
||||||
{ text: "__(Copy)", id: "copy" },
|
{ text: "__(Copy)", id: "copy" },
|
||||||
{ text: "__(Paste)", id: "paste"}
|
{ text: "__(Paste)", id: "paste"}
|
||||||
]
|
]
|
||||||
m.set "onmenuselect", (e) =>
|
m.onmenuselect = (e) =>
|
||||||
return unless e
|
return unless e
|
||||||
@mctxHandle e.data.item.get "data"
|
@mctxHandle e.data.item.data
|
||||||
m.show e
|
m.show e
|
||||||
@resizeContent()
|
@resizeContent()
|
||||||
@openSession()
|
@openSession()
|
||||||
@ -100,7 +100,7 @@ class wTerm extends this.OS.GUI.BaseApplication
|
|||||||
menu: () ->
|
menu: () ->
|
||||||
{
|
{
|
||||||
text: "__(Edit)",
|
text: "__(Edit)",
|
||||||
child: [
|
nodes: [
|
||||||
{ text: "__(Terminal URI)", dataid: "#{@name}-termuri" }
|
{ text: "__(Terminal URI)", dataid: "#{@name}-termuri" }
|
||||||
],
|
],
|
||||||
onchildselect: (e) => @configure()
|
onchildselect: (e) => @configure()
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
"author": "Xuan Sang LE",
|
"author": "Xuan Sang LE",
|
||||||
"email": "xsang.le@gmail.com"
|
"email": "xsang.le@gmail.com"
|
||||||
},
|
},
|
||||||
"version":"0.0.4-a",
|
"version":"0.0.5-a",
|
||||||
"category":"System",
|
"category":"System",
|
||||||
"iconclass":"fa fa-terminal",
|
"iconclass":"fa fa-terminal",
|
||||||
"mimes":["none"],
|
"mimes":["none"],
|
||||||
|
Loading…
Reference in New Issue
Block a user