+
+
\ No newline at end of file
diff --git a/src/core/gui/tags/afx-hbox.js b/src/core/gui/tags/afx-hbox.js
index 7fcd61a..956897a 100644
--- a/src/core/gui/tags/afx-hbox.js
+++ b/src/core/gui/tags/afx-hbox.js
@@ -4,14 +4,30 @@
\ No newline at end of file
diff --git a/src/core/gui/tags/afx-menu.js b/src/core/gui/tags/afx-menu.js
index d54f56f..b552af2 100644
--- a/src/core/gui/tags/afx-menu.js
+++ b/src/core/gui/tags/afx-menu.js
@@ -1,17 +1,42 @@
+
\ No newline at end of file
diff --git a/src/core/gui/tags/afx-vbox.js b/src/core/gui/tags/afx-vbox.js
index 890fd5c..e52b005 100644
--- a/src/core/gui/tags/afx-vbox.js
+++ b/src/core/gui/tags/afx-vbox.js
@@ -4,6 +4,23 @@
+
+
diff --git a/src/packages/ActivityMonitor/Makefile b/src/packages/ActivityMonitor/Makefile
new file mode 100644
index 0000000..5bd288b
--- /dev/null
+++ b/src/packages/ActivityMonitor/Makefile
@@ -0,0 +1,33 @@
+coffee_files = main.coffee
+
+jsfiles =
+
+cssfiles = main.css
+
+copyfiles = scheme.html package.json
+
+
+BLUE=\033[1;34m
+NC=\033[0m
+
+main: title clean js css copy
+
+title:
+ @echo "$(BLUE)======= Package ActivityMonitor =======$(NC)"
+
+coffee:
+ - mkdir build
+ for f in $(coffee_files); do (coffee -cs < $$f >build/"$$f.js");done
+ for f in build/*.coffee.js; do (cat "$${f}"; echo) >> build/main.js; done
+ - rm build/*.coffee.js
+
+js: coffee
+ for f in $(jsfiles); do (cat "$${f}"; echo) >> build/main.js; done
+
+css:
+ for f in $(cssfiles); do (cat "$${f}"; echo) >> build/main.css; done
+
+copy:
+ cp -rf $(copyfiles) build/
+clean:
+ - rm -rf build/*
\ No newline at end of file
diff --git a/src/packages/ActivityMonitor/main.coffee b/src/packages/ActivityMonitor/main.coffee
new file mode 100644
index 0000000..de05f2e
--- /dev/null
+++ b/src/packages/ActivityMonitor/main.coffee
@@ -0,0 +1,56 @@
+_PM = this.OS.PM
+_APP = this.OS.APP
+class ActivityMonitor extends this.OS.GUI.BaseApplication
+ constructor: () ->
+ super "ActivityMonitor"
+ main: () ->
+ me = @
+ @scheme.set "apptitle", "Activity Monitor"
+ @grid = @find "mygrid"
+ @on "btclick", (e)->
+ return unless e.id == "btkill"
+ item = me.grid.get "selected"
+ return unless item
+ app = _PM.appByPid item[0].value
+ app.quit() if app
+
+ header = [{width:50,value:"Pid"},{value:"Name"},{width:100,value:"Alive (ms)"}]
+ @gdata =
+ processes:{}
+ alive:[]
+ @grid.set "header",header
+ @monitor()
+
+ monitor: () ->
+ me = @
+ #get all current running process
+ me.gdata.alive = []
+ now = (new Date).getTime()
+ $.each _PM.processes, (i,d)->
+ $.each d , (j,a)->
+ if me.gdata.processes[a.pid] #update it
+ me.gdata.processes[a.pid][2].value = now - a.birth
+ else #add it
+ me.gdata.processes[a.pid] = [
+ {value:a.pid},
+ {icon:_APP[a.name].meta.icon,iconclass:_APP[a.name].meta.iconclass,value:a.name},
+ {value: now - a.birth}
+ ]
+ me.gdata.alive.push a.pid
+ @refreshGrid()
+ @timer = setTimeout (()-> me.monitor()),500#one second
+
+ refreshGrid: ()->
+ activeList = []
+ me = @
+ $.each @gdata.processes, (i,e) ->
+ if ($.inArray (Number i),me.gdata.alive) >= 0
+ activeList.push e
+ else
+ me.gdata.processes[i] = undefined
+ @grid.set "rows",activeList
+ exit: (e) ->
+ clearTimeout @timer if @timer
+
+ActivityMonitor.singleton = true
+this.OS.register "ActivityMonitor",ActivityMonitor
\ No newline at end of file
diff --git a/src/packages/ActivityMonitor/main.css b/src/packages/ActivityMonitor/main.css
new file mode 100644
index 0000000..308258e
--- /dev/null
+++ b/src/packages/ActivityMonitor/main.css
@@ -0,0 +1,8 @@
+afx-app-window[data-id="am-window"] afx-button{
+ margin: 3px;
+}
+
+afx-app-window[data-id="am-window"] afx-grid-view{
+ padding-left:10px;
+ padding-right: 10px;
+}
\ No newline at end of file
diff --git a/src/packages/ActivityMonitor/package.json b/src/packages/ActivityMonitor/package.json
new file mode 100644
index 0000000..4e7e188
--- /dev/null
+++ b/src/packages/ActivityMonitor/package.json
@@ -0,0 +1,12 @@
+{
+ "app":"ActivityMonitor",
+ "name":"Activity monitor",
+ "description":"Processes monitor and manager",
+ "author":{
+ "name": "Xuan Sang LE",
+ "email": "xsang.le@gmail.com"
+ },
+ "category":"System",
+ "iconclass":"fa fa-heartbeat",
+ "mimes":["*"]
+}
\ No newline at end of file
diff --git a/src/packages/ActivityMonitor/scheme.html b/src/packages/ActivityMonitor/scheme.html
new file mode 100644
index 0000000..19f9a0f
--- /dev/null
+++ b/src/packages/ActivityMonitor/scheme.html
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/NotePad/Makefile b/src/packages/NotePad/Makefile
index 71dae6b..c190611 100644
--- a/src/packages/NotePad/Makefile
+++ b/src/packages/NotePad/Makefile
@@ -7,27 +7,27 @@ cssfiles = main.css
copyfiles = scheme.html package.json
-BLUE=\033[0;34m
+BLUE=\033[1;34m
NC=\033[0m
main: title clean js css copy
title:
- - echo "$(BLUE)======= Package NotePad =======$(NC)"
+ @echo "$(BLUE)======= Package NotePad =======$(NC)"
coffee:
- mkdir build
- - for f in $(coffee_files); do (coffee -cs < $$f >build/"$$f.js");done
- - for f in build/*.coffee.js; do (cat "$${f}"; echo) >> build/main.js; done
+ for f in $(coffee_files); do (coffee -cs < $$f >build/"$$f.js");done
+ for f in build/*.coffee.js; do (cat "$${f}"; echo) >> build/main.js; done
- rm build/*.coffee.js
js: coffee
- - for f in $(jsfiles); do (cat "$${f}"; echo) >> build/main.js; done
+ for f in $(jsfiles); do (cat "$${f}"; echo) >> build/main.js; done
css:
- - for f in $(cssfiles); do (cat "$${f}"; echo) >> build/main.css; done
+ for f in $(cssfiles); do (cat "$${f}"; echo) >> build/main.css; done
copy:
- - cp -rf $(copyfiles) build/
+ cp -rf $(copyfiles) build/
clean:
- rm -rf build/*
\ No newline at end of file
diff --git a/src/packages/NotePad/main.coffee b/src/packages/NotePad/main.coffee
index 9d294d6..f6c235d 100644
--- a/src/packages/NotePad/main.coffee
+++ b/src/packages/NotePad/main.coffee
@@ -1,10 +1,53 @@
class NotePad extends this.OS.GUI.BaseApplication
constructor: () ->
super "NotePad"
- event: () ->
- console.log @scheme
- @on "btclick", (e)->
- alert "Happy pola"
- @on "resize", (w,h)->
- console.log "resize"
+ main: () ->
+ me = @
+ @scheme.set "apptitle", "NotePad"
+
+ div = @find "datarea"
+ ace.require "ace/ext/language_tools"
+ @.editor = ace.edit div
+ @.editor.setTheme "ace/theme/monokai"
+ @.editor.getSession().setMode 'ace/mode/text'
+ @.editor.setOptions {
+ enableBasicAutocompletion: true,
+ enableSnippets: true,
+ enableLiveAutocompletion: true,
+ fontSize: "10pt"
+ }
+ @.editor.completers.push {getCompletions:(editor, session, pos, prefix, callback)->}
+ @.editor.getSession().setUseWrapMode true
+
+ list = @find "modelist"
+ @modes = ace.require "ace/ext/modelist"
+ ldata = []
+ ldata.push {text:m.name, mode:m.mode} for m in @modes.modes
+ list.set "items",ldata
+ list.set "onlistselect", (e)->
+ me.editor.session.setMode e.data.mode
+
+ stat = @find "editorstat"
+ #status
+ stup = (e)->
+ c = me.editor.session.selection.getCursor()
+ l = me.editor.session.getLength()
+ $(stat).html "Row #{c.row}, col #{c.column}, lines: #{l}"
+ stup(0)
+ @.editor.getSession().selection.on "changeCursor", (e)->
+ stup(e)
+
+ @on "resize", ()-> me.editor.resize()
+ @on "focus", ()->me.editor.focus()
+
+ menu: ()->
+ menu = [{
+ text:"File",
+ child:[
+ {text:"Open", dataid:"#{@name}-Open"},
+ {text:"Close", dataid:"#{@name}-Close"}
+ ]
+ }]
+ menu
+NotePad.singleton = false
this.OS.register "NotePad",NotePad
\ No newline at end of file
diff --git a/src/packages/NotePad/main.css b/src/packages/NotePad/main.css
index 59380ce..72604bf 100644
--- a/src/packages/NotePad/main.css
+++ b/src/packages/NotePad/main.css
@@ -1,3 +1,9 @@
-fut{
- background-color: black
+
+afx-app-window[data-id="notepad"] afx-list-view[data-id="modelist"]{
+ margin:2px;
+}
+
+afx-app-window[data-id="notepad"] span[data-id="editorstat"]{
+ padding:5px;
+ display: inline-block;
}
\ No newline at end of file
diff --git a/src/packages/NotePad/package.json b/src/packages/NotePad/package.json
index f8d791e..7223d3b 100644
--- a/src/packages/NotePad/package.json
+++ b/src/packages/NotePad/package.json
@@ -7,6 +7,6 @@
"email": "xsang.le@gmail.com"
},
"category":"System",
- "icon":"",
+ "iconclass":"fa fa-pencil-square-o",
"mimes":["*"]
}
\ No newline at end of file
diff --git a/src/packages/NotePad/scheme.html b/src/packages/NotePad/scheme.html
index 1446de5..7256b81 100644
--- a/src/packages/NotePad/scheme.html
+++ b/src/packages/NotePad/scheme.html
@@ -1,16 +1,24 @@
-
-
+
+
-
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/Terminal/Makefile b/src/packages/Terminal/Makefile
new file mode 100644
index 0000000..197cf3d
--- /dev/null
+++ b/src/packages/Terminal/Makefile
@@ -0,0 +1,33 @@
+coffee_files = main.coffee
+
+jsfiles =
+
+cssfiles = main.css
+
+copyfiles = scheme.html package.json
+
+
+BLUE=\033[1;34m
+NC=\033[0m
+
+main: title clean js css copy
+
+title:
+ @echo "$(BLUE)======= Package Terminal =======$(NC)"
+
+coffee:
+ - mkdir build
+ for f in $(coffee_files); do (coffee -cs < $$f >build/"$$f.js");done
+ for f in build/*.coffee.js; do (cat "$${f}"; echo) >> build/main.js; done
+ - rm build/*.coffee.js
+
+js: coffee
+ for f in $(jsfiles); do (cat "$${f}"; echo) >> build/main.js; done
+
+css:
+ for f in $(cssfiles); do (cat "$${f}"; echo) >> build/main.css; done
+
+copy:
+ cp -rf $(copyfiles) build/
+clean:
+ - rm -rf build/*
\ No newline at end of file
diff --git a/src/packages/Terminal/main.coffee b/src/packages/Terminal/main.coffee
new file mode 100644
index 0000000..a4d5b38
--- /dev/null
+++ b/src/packages/Terminal/main.coffee
@@ -0,0 +1,80 @@
+class Terminal extends this.OS.GUI.BaseApplication
+ constructor: () ->
+ super "Terminal"
+ main: () ->
+ self = @
+ @on "btclick", (e)->
+ alert "#{self.name}: Happy pola"
+ @on "resize", (w,h)->
+ console.log "#{self.name}: resize"
+ #@on "listselect", (i)->
+ # console.log self.name, i
+ @on "treeselect", (i) ->
+ console.log self.name,i
+ @on "focus", ()->
+ console.log self.name, "is focused"
+ tree = @find "mytree"
+
+ @scheme.set "apptitle", "Terminal"
+ tdata = {
+ name: 'My Tree',
+ nodes: [
+ { name: 'hello', icon:'packages/NotePad/icon.png'},
+ { name: 'wat' },
+ {
+ name: 'child folder',
+ nodes: [
+ {
+ name: 'child folder',
+ nodes: [
+ { name: 'hello' },
+ { name: 'wat' }
+ ]
+ },
+ { name: 'hello' },
+ { name: 'wat' },
+ {
+ name: 'child folder',
+ nodes: [
+ { name: 'hello' },
+ { name: 'wat' }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ tree.set "*",tdata
+
+ list = @find "mylist"
+ ldata = [
+ {text:"some thing with avery long text"},
+ {text:"some thing"},
+ {text:"some thing"},
+ {text:"some thing"},
+ {text:"some thing"},
+ {text:"some thing"},
+ {text:"some thing"},
+ {text:"some thing"},
+ {text:"some thing"},
+ {text:"some thing"},
+ {text:"some thing"},
+ {text:"some thing"},
+ {text:"some thing"},
+ {text:"some thing"},
+ {text:"some thing"},
+ {text:"some thing"},
+ {text:"some thing"},
+ {text:"some thing"},
+ {text:"some thing"},
+ {text:"some thing"},
+ {text:"some thing"},
+ {text:"some thing"},
+ {text:"some thing"}
+ ]
+ list.set "items",ldata
+ list.set "onlistselect", (e)->
+ console.log e
+
+Terminal.singleton = false
+this.OS.register "Terminal",Terminal
\ No newline at end of file
diff --git a/src/packages/Terminal/main.css b/src/packages/Terminal/main.css
new file mode 100644
index 0000000..e69de29
diff --git a/src/packages/Terminal/package.json b/src/packages/Terminal/package.json
new file mode 100644
index 0000000..746ae1b
--- /dev/null
+++ b/src/packages/Terminal/package.json
@@ -0,0 +1,12 @@
+{
+ "app":"Terminal",
+ "name":"Unix terminal like",
+ "description":"Access Unix terminal from web",
+ "author":{
+ "name": "Xuan Sang LE",
+ "email": "xsang.le@gmail.com"
+ },
+ "category":"System",
+ "iconclass":"fa fa-terminal",
+ "mimes":["*"]
+}
\ No newline at end of file
diff --git a/src/core/gui/schemes/test.html b/src/packages/Terminal/scheme.html
similarity index 55%
rename from src/core/gui/schemes/test.html
rename to src/packages/Terminal/scheme.html
index 1446de5..2d526a1 100644
--- a/src/core/gui/schemes/test.html
+++ b/src/packages/Terminal/scheme.html
@@ -1,16 +1,14 @@
-
-
-
+
-
+
-
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.