mirror of
https://github.com/lxsang/antos-frontend.git
synced 2025-07-19 15:29:51 +02:00
add tab bar
This commit is contained in:
@ -5,7 +5,7 @@ class BaseModel
|
||||
@_gui = self.OS.GUI
|
||||
me = @
|
||||
@on "exit", () -> me.quit()
|
||||
@host = "#workingenv"
|
||||
@host = "#desktop"
|
||||
@dialog = undefined
|
||||
|
||||
render: (p) ->
|
||||
|
@ -221,16 +221,18 @@ self.OS.GUI =
|
||||
it = desktop[0].get "selected"
|
||||
_GUI.openWith it
|
||||
|
||||
($ "#workingenv").on "click", (e) ->
|
||||
desktop[0].set "selected", -1
|
||||
#($ "#workingenv").on "click", (e) ->
|
||||
# desktop[0].set "selected", -1
|
||||
|
||||
desktop.on "click", (e) ->
|
||||
return unless e.target is desktop[0]
|
||||
desktop[0].set "selected", -1
|
||||
($ "#sysdock").get(0).set "selectedApp", null
|
||||
desktop[0].set "selected", -1 if e.target is desktop[0]
|
||||
console.log "desktop clicked"
|
||||
|
||||
desktop[0].contextmenuHandler = (e, m) ->
|
||||
desktop[0].set "selected", -1 if e.target is desktop[0]
|
||||
($ "#sysdock").get(0).set "selectedApp", null
|
||||
console.log "context menu handler for desktop"
|
||||
|
||||
desktop[0].fetch()
|
||||
@ -264,8 +266,9 @@ self.OS.GUI =
|
||||
_OS.setting.appearance = conf.appearance if conf.appearance
|
||||
_OS.setting.user = conf.user
|
||||
_OS.setting.desktop.path = "home:///.desktop" unless _OS.setting.desktop.path
|
||||
_OS.setting.appearance.theme = "antos" unless _OS.setting.appearance.theme
|
||||
# load theme
|
||||
_GUI.loadTheme "antos"
|
||||
_GUI.loadTheme _OS.setting.appearance.theme
|
||||
# initDM
|
||||
_GUI.initDM()
|
||||
_courrier.observable.one "syspanelloaded", () ->
|
||||
@ -276,5 +279,5 @@ self.OS.GUI =
|
||||
|
||||
# startup application here
|
||||
_courrier.observable.one "desktoploaded", () ->
|
||||
_GUI.launch "Files"
|
||||
_GUI.launch "NotePad"
|
||||
_GUI.launch "DummyApp"
|
||||
#_GUI.launch "NotePad"
|
@ -4,6 +4,6 @@
|
||||
<div id = "workspace">
|
||||
<afx-apps-dock id="sysdock"></afx-apps-dock>
|
||||
<afx-float-list id = "desktop" ></afx-float-list>
|
||||
<div id = "workingenv"></div>
|
||||
<!--div id = "workingenv"></div-->
|
||||
</div>
|
||||
<afx-menu id="contextmenu" context="true" style="display:none;"></afx-menu>
|
||||
|
@ -27,6 +27,9 @@
|
||||
this.root.observable = opts.observable || riot.observable()
|
||||
if(!window._zindex) window._zindex = 10
|
||||
this.shown = false
|
||||
|
||||
self.root.contextmenuHandler = function (e) {}
|
||||
|
||||
self.root.set = function(k,v)
|
||||
{
|
||||
if(k == "*")
|
||||
|
@ -17,7 +17,8 @@
|
||||
{
|
||||
for(var i in self.items)
|
||||
self.items[i].app.blur()
|
||||
//v.show()
|
||||
if(v)
|
||||
$("#desktop")[0].set("selected", -1)
|
||||
}
|
||||
}
|
||||
self.update()
|
||||
|
@ -1,8 +1,9 @@
|
||||
<afx-float-list ref = "container">
|
||||
<div each={item,i in items } class={float_list_item:true, float_list_item_selected: parent._autoselect(item,i)} ondblclick = {parent._dbclick} onmousedown = {parent._select} oncontextmenu = {parent._select}>
|
||||
<afx-label color = {item.color} iconclass = {item.iconclass} icon = {item.icon} text = {item.text}></afx-label>
|
||||
<div ref = "list">
|
||||
<div each={item,i in items } class={float_list_item:true, float_list_item_selected: parent._autoselect(item,i)} ondblclick = {parent._dbclick} onmousedown = {parent._select} oncontextmenu = {parent._select}>
|
||||
<afx-label color = {item.color} iconclass = {item.iconclass} icon = {item.icon} text = {item.text}></afx-label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
this.items = opts.items || []
|
||||
var self = this
|
||||
@ -82,7 +83,7 @@
|
||||
var cleft = 20
|
||||
var gw = $(self.refs.container).width()
|
||||
var gh = $(self.refs.container).height()
|
||||
$(self.refs.container)
|
||||
$(self.refs.list)
|
||||
.children()
|
||||
.each(function(e)
|
||||
{
|
||||
|
@ -15,6 +15,7 @@
|
||||
self.selidx = -1
|
||||
self.onlistselect = opts.onlistselect
|
||||
self.onlistdbclick = opts.onlistdbclick
|
||||
self.onitemclose = opts.onitemclose
|
||||
var onclose = false
|
||||
this.rid = $(self.root).attr("data-id") || Math.floor(Math.random() * 100000) + 1
|
||||
self.root.set = function(k,v)
|
||||
@ -39,6 +40,8 @@
|
||||
return self.items[self.selidx]
|
||||
else
|
||||
return undefined
|
||||
else if(k == "count")
|
||||
return self.items.length
|
||||
return self[k]
|
||||
}
|
||||
self.root.push = function(e,u)
|
||||
@ -73,6 +76,7 @@
|
||||
{
|
||||
this.root.observable = riot.observable()
|
||||
}
|
||||
|
||||
this.on("mount", function(){
|
||||
if(opts.dropdown == "true")
|
||||
{
|
||||
@ -108,7 +112,11 @@
|
||||
}
|
||||
_remove(event)
|
||||
{
|
||||
self.root.remove(event.item.item, true)
|
||||
r = true
|
||||
if(self.onitemclose)
|
||||
r = self.onitemclose(event)
|
||||
if(r)
|
||||
self.root.remove(event.item.item, true)
|
||||
}
|
||||
_autoselect(it,i)
|
||||
{
|
||||
|
60
src/core/tags/afx-tab-container.js
Normal file
60
src/core/tags/afx-tab-container.js
Normal file
@ -0,0 +1,60 @@
|
||||
<afx-tab-container>
|
||||
<afx-list-view ref = "list" />
|
||||
<script>
|
||||
var self = this
|
||||
this.closable = opts.closable || false
|
||||
self.root.observable = opts.observable || riot.observable()
|
||||
get_observable(){
|
||||
return self.root.observable
|
||||
}
|
||||
|
||||
self.root.get = function (k) {
|
||||
return self.refs.list.root.get(k)
|
||||
}
|
||||
|
||||
|
||||
self.on("mount", function(){
|
||||
self.refs.list.root.observable = self.root.observable
|
||||
/*self.root.observable.on("listselect", function(){
|
||||
console.log("list select")
|
||||
})*/
|
||||
self.refs.list.root.set ("onlistselect",function (e) {
|
||||
self.root.observable.trigger("tabselect", e)
|
||||
})
|
||||
})
|
||||
|
||||
self.root.set = function (k,v){
|
||||
if( k == "*")
|
||||
for(var i in v)
|
||||
self.refs.list.root.set(i,v[i])
|
||||
else if(k == "closable")
|
||||
{
|
||||
self.closable = v
|
||||
}
|
||||
else
|
||||
{
|
||||
if(k == "items")
|
||||
{
|
||||
for(var i in v)
|
||||
v[i].closable = self.closable
|
||||
}
|
||||
self.refs.list.root.set(k,v)
|
||||
}
|
||||
//self.update()
|
||||
}
|
||||
|
||||
self.root.push = function(e,u)
|
||||
{
|
||||
e.closable = self.closable
|
||||
self.refs.list.root.push(e,u)
|
||||
}
|
||||
self.root.unshift = function(e,u)
|
||||
{
|
||||
self.refs.list.root.unshift(e,u)
|
||||
}
|
||||
self.root.remove = function(e,u)
|
||||
{
|
||||
self.refs.list.root.remove(e,u)
|
||||
}
|
||||
</script>
|
||||
</afx-tab-container>
|
@ -15,7 +15,15 @@ String.prototype.asFileHandler = () ->
|
||||
this.OS.API.VFS = {}
|
||||
|
||||
class BasicFileHandler
|
||||
constructor: (@path) ->
|
||||
constructor: (path) ->
|
||||
@setPath path
|
||||
|
||||
setPath: (p) ->
|
||||
@ready = false
|
||||
@dirty = false
|
||||
@cache = undefined
|
||||
return unless p
|
||||
@path = p
|
||||
list = @path.split ":///"
|
||||
@protocol = list[0]
|
||||
return unless list.length > 1
|
||||
@ -24,8 +32,6 @@ class BasicFileHandler
|
||||
@genealogy = re.split("/")
|
||||
@basename = @genealogy[@genealogy.length - 1] unless @isRoot()
|
||||
@ext = @basename.split( "." ).pop() unless @basename.lastIndexOf(".") is 0 or @basename.indexOf( "." ) is -1
|
||||
@ready = false
|
||||
|
||||
|
||||
isRoot: () -> (not @genealogy) or (@genealogy.size is 0)
|
||||
|
||||
@ -33,7 +39,9 @@ class BasicFileHandler
|
||||
return false if not @basename
|
||||
@basename[0] is "."
|
||||
|
||||
hash: () -> @path.hash()
|
||||
hash: () ->
|
||||
return -1 unless @path
|
||||
return @path.hash()
|
||||
|
||||
parent: () ->
|
||||
return @ if @isRoot()
|
||||
|
Reference in New Issue
Block a user