mirror of
https://github.com/flynx/ImageGrid.git
synced 2025-10-29 18:30:09 +00:00
added cloning and some cleanup...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
227e732cfa
commit
54c37a769a
@ -750,11 +750,27 @@ module.MetaActions = {
|
|||||||
// NOTE: this will not copy/clone any data.
|
// NOTE: this will not copy/clone any data.
|
||||||
//
|
//
|
||||||
// XXX is this correct???
|
// XXX is this correct???
|
||||||
clone: function(){
|
// XXX should this be an action???
|
||||||
|
clone: function(full){
|
||||||
var o = Object.create(this)
|
var o = Object.create(this)
|
||||||
o.config = Object.create(this.config)
|
if(this.config){
|
||||||
|
if(full){
|
||||||
|
o.config = JSON.parse(JSON.stringify(this.config))
|
||||||
|
} else {
|
||||||
|
o.config = Object.create(this.config)
|
||||||
|
}
|
||||||
|
}
|
||||||
return o
|
return o
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
|
// This will create a .config in instances...
|
||||||
|
// NOTE: this makes Actions compatible with lib/object.js...
|
||||||
|
__init__: function(){
|
||||||
|
if(this.__proto__.config && !Object.hasOwnProperty(this, 'config')){
|
||||||
|
this.config = Object.create(this.__proto__.config)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -330,14 +330,6 @@ module.QueueActions = actions.Actions({
|
|||||||
delete this.__failed
|
delete this.__failed
|
||||||
delete this.__done
|
delete this.__done
|
||||||
}],
|
}],
|
||||||
|
|
||||||
|
|
||||||
// This will create a .config in instances...
|
|
||||||
__init__: function(){
|
|
||||||
if(this.__proto__.config && !Object.hasOwnProperty(this, 'config')){
|
|
||||||
this.config = Object.create(this.__proto__.config)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -122,6 +122,19 @@ var RibbonsPrototype = {
|
|||||||
this.images = images
|
this.images = images
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// XXX
|
||||||
|
clone: function(){
|
||||||
|
var o = new this.constructor()
|
||||||
|
if(this.viewer){
|
||||||
|
// XXX does this completely detach from the orriginal???
|
||||||
|
// XXX do we need to reattach something???
|
||||||
|
o.viewer = this.viewer.clone()
|
||||||
|
}
|
||||||
|
if(this.images){
|
||||||
|
o.images = this.images.clone()
|
||||||
|
}
|
||||||
|
return o
|
||||||
|
},
|
||||||
|
|
||||||
// Constructors...
|
// Constructors...
|
||||||
createViewer: RibbonsClassPrototype.createViewer,
|
createViewer: RibbonsClassPrototype.createViewer,
|
||||||
|
|||||||
@ -260,6 +260,21 @@ actions.Actions({
|
|||||||
delete this.images
|
delete this.images
|
||||||
}],
|
}],
|
||||||
|
|
||||||
|
// NOTE: for complete isolation it is best to completely copy the
|
||||||
|
// .config...
|
||||||
|
clone: [function(full){
|
||||||
|
var res = actions.MetaActions.clone.call(this, full)
|
||||||
|
|
||||||
|
if(this.data){
|
||||||
|
res.data = this.data.clone()
|
||||||
|
}
|
||||||
|
if(this.images){
|
||||||
|
res.images = this.images.clone()
|
||||||
|
}
|
||||||
|
|
||||||
|
return res
|
||||||
|
}],
|
||||||
|
|
||||||
// XXX should this be here???
|
// XXX should this be here???
|
||||||
loadURLs: ['File/Load a URL list',
|
loadURLs: ['File/Load a URL list',
|
||||||
function(lst, base){
|
function(lst, base){
|
||||||
@ -1000,6 +1015,18 @@ actions.Actions({
|
|||||||
clear: [
|
clear: [
|
||||||
function(){ this.ribbons.clear() }],
|
function(){ this.ribbons.clear() }],
|
||||||
|
|
||||||
|
clone: [function(full){
|
||||||
|
return function(res){
|
||||||
|
if(this.ribbons){
|
||||||
|
// NOTE: this is a bit wasteful as .ribbons will clone
|
||||||
|
// their ref to .images that we will throw away...
|
||||||
|
res.ribbons = this.ribbons.clone()
|
||||||
|
res.ribbons.images = res.images
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
|
||||||
|
|
||||||
loadURLs: [
|
loadURLs: [
|
||||||
function(){
|
function(){
|
||||||
return function(){
|
return function(){
|
||||||
@ -1449,19 +1476,39 @@ module.Journal = ImageGridFeatures.Feature({
|
|||||||
depends: ['base'],
|
depends: ['base'],
|
||||||
|
|
||||||
actions: actions.Actions({
|
actions: actions.Actions({
|
||||||
|
|
||||||
|
journal: null,
|
||||||
|
|
||||||
|
clone: [function(full){
|
||||||
|
return function(res){
|
||||||
|
res.journal = null
|
||||||
|
if(full && Object.hasOwnProperty(this, 'journal') && this.journal){
|
||||||
|
res.journal = JSON.parse(JSON.stringify(this.journal))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
|
||||||
// XXX might be good to add some kind of metadata to journal...
|
// XXX might be good to add some kind of metadata to journal...
|
||||||
journalPush: ['Journal/Add an item to journal',
|
journalPush: ['Journal/Add an item to journal',
|
||||||
function(){
|
function(){
|
||||||
if(this.journal == null){
|
this.journal = (Object.hasOwnProperty(this, 'journal')
|
||||||
this.journal = []
|
|| this.journal) ?
|
||||||
}
|
this.journal
|
||||||
|
: []
|
||||||
//console.log('ACTION:', action, args2array(arguments))
|
//console.log('ACTION:', action, args2array(arguments))
|
||||||
this.journal.push(args2array(arguments))
|
this.journal.push(args2array(arguments))
|
||||||
}],
|
}],
|
||||||
clearJournal: ['Journal/Clear the action journal',
|
clearJournal: ['Journal/Clear the action journal',
|
||||||
function(){
|
function(){
|
||||||
if(this.journal){
|
if(this.journal){
|
||||||
delete this.journal
|
// NOTE: overwriting here is better as it will keep
|
||||||
|
// shadowing the parent's .journal in case we
|
||||||
|
// are cloned.
|
||||||
|
// NOTE: either way this will have no effect as we
|
||||||
|
// only use the local .journal but the user may
|
||||||
|
// get confused...
|
||||||
|
//delete this.journal
|
||||||
|
this.journal = null
|
||||||
}
|
}
|
||||||
}],
|
}],
|
||||||
runJournal: ['Journal/Run journal',
|
runJournal: ['Journal/Run journal',
|
||||||
@ -3402,6 +3449,17 @@ var FileSystemLoaderActions = actions.Actions({
|
|||||||
'index-dir': '.ImageGrid',
|
'index-dir': '.ImageGrid',
|
||||||
},
|
},
|
||||||
|
|
||||||
|
clone: [function(full){
|
||||||
|
return function(res){
|
||||||
|
if(this.base_path){
|
||||||
|
res.base_path = this.base_path
|
||||||
|
}
|
||||||
|
if(this.loaded_paths){
|
||||||
|
res.loaded_paths = JSON.parse(JSON.stringify(this.loaded_paths))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
|
||||||
// NOTE: these will remove the trailing '/' (or '\') unless the path
|
// NOTE: these will remove the trailing '/' (or '\') unless the path
|
||||||
// is root...
|
// is root...
|
||||||
// ...this is mainly to facilitate better browse support, i.e.
|
// ...this is mainly to facilitate better browse support, i.e.
|
||||||
@ -3816,6 +3874,14 @@ var FileSystemWriterActions = actions.Actions({
|
|||||||
// NOTE: .current is written always.
|
// NOTE: .current is written always.
|
||||||
chages: null,
|
chages: null,
|
||||||
|
|
||||||
|
clone: [function(full){
|
||||||
|
return function(res){
|
||||||
|
res.changes = null
|
||||||
|
if(full && Object.hasOwnProperty(this, 'changes') && this.changes){
|
||||||
|
res.changes = JSON.parse(JSON.stringify(this.changes))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
|
||||||
// Convert json index to a format compatible with file.writeIndex(..)
|
// Convert json index to a format compatible with file.writeIndex(..)
|
||||||
//
|
//
|
||||||
@ -3861,7 +3927,9 @@ var FileSystemWriterActions = actions.Actions({
|
|||||||
prepareIndexForWrite: ['File/Prepare index for writing',
|
prepareIndexForWrite: ['File/Prepare index for writing',
|
||||||
function(json, full){
|
function(json, full){
|
||||||
json = json || this.json('base')
|
json = json || this.json('base')
|
||||||
var changes = full ? null : this.changes
|
var changes = full ? null
|
||||||
|
: Object.hasOwnProperty(this, 'changes') ? this.changes
|
||||||
|
: null
|
||||||
return {
|
return {
|
||||||
raw: json,
|
raw: json,
|
||||||
prepared: file.prepareIndex(json, changes),
|
prepared: file.prepareIndex(json, changes),
|
||||||
@ -4017,7 +4085,11 @@ module.FileSystemWriter = ImageGridFeatures.Feature({
|
|||||||
'loadURLs',
|
'loadURLs',
|
||||||
].join(' '),
|
].join(' '),
|
||||||
function(_, target){
|
function(_, target){
|
||||||
delete this.changes
|
// NOTE: this is better than delete as it will shadow
|
||||||
|
// the parent's changes in case we got cloned from
|
||||||
|
// a live instance...
|
||||||
|
//delete this.changes
|
||||||
|
this.changes = null
|
||||||
}],
|
}],
|
||||||
|
|
||||||
// data...
|
// data...
|
||||||
@ -4045,7 +4117,10 @@ module.FileSystemWriter = ImageGridFeatures.Feature({
|
|||||||
'collapseGroup',
|
'collapseGroup',
|
||||||
].join(' '),
|
].join(' '),
|
||||||
function(_, target){
|
function(_, target){
|
||||||
var changes = this.changes = this.changes || {}
|
var changes = this.changes =
|
||||||
|
Object.hasOwnProperty(this, 'changes') ?
|
||||||
|
this.changes
|
||||||
|
: {}
|
||||||
|
|
||||||
changes.data = true
|
changes.data = true
|
||||||
}],
|
}],
|
||||||
@ -4058,7 +4133,10 @@ module.FileSystemWriter = ImageGridFeatures.Feature({
|
|||||||
'flipVertical',
|
'flipVertical',
|
||||||
].join(' '),
|
].join(' '),
|
||||||
function(_, target){
|
function(_, target){
|
||||||
var changes = this.changes = this.changes || {}
|
var changes = this.changes =
|
||||||
|
Object.hasOwnProperty(this, 'changes') ?
|
||||||
|
this.changes
|
||||||
|
: {}
|
||||||
var images = changes.images = changes.images || []
|
var images = changes.images = changes.images || []
|
||||||
target = this.data.getImage(target)
|
target = this.data.getImage(target)
|
||||||
|
|
||||||
@ -4069,7 +4147,10 @@ module.FileSystemWriter = ImageGridFeatures.Feature({
|
|||||||
// NOTE: tags are also stored in images...
|
// NOTE: tags are also stored in images...
|
||||||
['tag untag',
|
['tag untag',
|
||||||
function(_, tags, gids){
|
function(_, tags, gids){
|
||||||
var changes = this.changes = this.changes || {}
|
var changes = this.changes =
|
||||||
|
Object.hasOwnProperty(this, 'changes') ?
|
||||||
|
this.changes
|
||||||
|
: {}
|
||||||
var images = changes.images = changes.images || []
|
var images = changes.images = changes.images || []
|
||||||
|
|
||||||
gids = gids || [this.data.getImage()]
|
gids = gids || [this.data.getImage()]
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user