mirror of
https://github.com/flynx/ImageGrid.git
synced 2025-10-29 10:20:08 +00:00
added a basic self-test framework...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
54ffa699e1
commit
77d799fac6
@ -855,5 +855,67 @@ module.Tasks = ImageGridFeatures.Feature({
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
// Self test framework...
|
||||||
|
|
||||||
|
var selfTest =
|
||||||
|
module.selfTest = function(func){
|
||||||
|
func.__self_test__ = true
|
||||||
|
return func
|
||||||
|
}
|
||||||
|
|
||||||
|
var SelfTestActions = actions.Actions({
|
||||||
|
config: {
|
||||||
|
'run-selftest-on-start': true,
|
||||||
|
},
|
||||||
|
|
||||||
|
runSelfTest: ['System/Run self test',
|
||||||
|
selfTest(function(mode){
|
||||||
|
var that = this
|
||||||
|
var logger = this.logger && this.logger.push('Self test')
|
||||||
|
|
||||||
|
var tests = this.actions
|
||||||
|
.filter(function(action){
|
||||||
|
return action != 'runSelfTest'
|
||||||
|
&& (that[action].func.__self_test__
|
||||||
|
|| that.getActionAttr(action, 'self_test'))})
|
||||||
|
|
||||||
|
logger
|
||||||
|
&& tests.forEach(function(action){
|
||||||
|
logger.emit('found', action) })
|
||||||
|
|
||||||
|
|
||||||
|
tests.forEach(function(action){
|
||||||
|
that[action]()
|
||||||
|
|
||||||
|
logger.emit('done', action)
|
||||||
|
})
|
||||||
|
})],
|
||||||
|
})
|
||||||
|
|
||||||
|
var SelfTest =
|
||||||
|
module.SelfTest = ImageGridFeatures.Feature({
|
||||||
|
title: '',
|
||||||
|
doc: '',
|
||||||
|
|
||||||
|
tag: 'self-test',
|
||||||
|
depends: [
|
||||||
|
'lifecycle'
|
||||||
|
],
|
||||||
|
priority: 'low',
|
||||||
|
|
||||||
|
actions: SelfTestActions,
|
||||||
|
|
||||||
|
handlers: [
|
||||||
|
['start',
|
||||||
|
function(){
|
||||||
|
this.config['run-selftest-on-start']
|
||||||
|
&& this.runSelfTest() }]
|
||||||
|
],
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
* vim:set ts=4 sw=4 : */ return module })
|
* vim:set ts=4 sw=4 : */ return module })
|
||||||
|
|||||||
@ -153,7 +153,7 @@ module.GLOBAL_KEYBOARD2 = {
|
|||||||
meta_Q: 'close',
|
meta_Q: 'close',
|
||||||
|
|
||||||
// XXX
|
// XXX
|
||||||
F5: keyboard.doc('Full reload viewer',
|
F5: keyboard.doc('Reload viewer (full)',
|
||||||
function(){
|
function(){
|
||||||
//a.stop()
|
//a.stop()
|
||||||
/*
|
/*
|
||||||
@ -437,6 +437,40 @@ var KeyboardActions = actions.Actions({
|
|||||||
get keyboard(){
|
get keyboard(){
|
||||||
return this.__keyboard_object },
|
return this.__keyboard_object },
|
||||||
|
|
||||||
|
testKeyboardDoc: ['- Interface/',
|
||||||
|
{self_test: true},
|
||||||
|
function(){
|
||||||
|
var that = this
|
||||||
|
var keys = this.keyboard.keys()
|
||||||
|
|
||||||
|
var index = {}
|
||||||
|
Object.keys(keys).forEach(function(mode){
|
||||||
|
Object.keys(keys[mode]).forEach(function(code){
|
||||||
|
if(code == ''){
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var a = keyboard.parseActionCall(code)
|
||||||
|
var doc = a.doc || that.getDocTitle(a.action) || null
|
||||||
|
|
||||||
|
// check if we have no doc...
|
||||||
|
if(doc == null || doc == ''){
|
||||||
|
console.warn('Action has no doc: "'
|
||||||
|
+ a.action +'" at: "'+ code +'"')
|
||||||
|
}
|
||||||
|
|
||||||
|
// see if two actions have the same doc...
|
||||||
|
if(index[doc] && index[doc] != a.action){
|
||||||
|
console.warn('Actions have same title: "'
|
||||||
|
+ index[doc] +'" and "'+ a.action
|
||||||
|
+'" at: "'+ code +'"')
|
||||||
|
}
|
||||||
|
|
||||||
|
index[doc] = a.action
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}],
|
||||||
|
|
||||||
// XXX need a clean deep copy to restore...
|
// XXX need a clean deep copy to restore...
|
||||||
resetKeyBindings: ['Interface/Restore default key bindings',
|
resetKeyBindings: ['Interface/Restore default key bindings',
|
||||||
function(){
|
function(){
|
||||||
@ -444,7 +478,12 @@ var KeyboardActions = actions.Actions({
|
|||||||
|
|
||||||
keyHandler: ['- Interface/Get or set key handler',
|
keyHandler: ['- Interface/Get or set key handler',
|
||||||
function(mode, key, action){
|
function(mode, key, action){
|
||||||
return this.keyboard.handler(mode, key, action) }],
|
var res = this.keyboard.handler(mode, key, action)
|
||||||
|
// return res only if we get a handler...
|
||||||
|
if(!action){
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
|
||||||
// Get normalized, flat set of actions and keys that trigger them...
|
// Get normalized, flat set of actions and keys that trigger them...
|
||||||
//
|
//
|
||||||
@ -575,9 +614,8 @@ var KeyboardActions = actions.Actions({
|
|||||||
// NOTE: the target element must be focusable...
|
// NOTE: the target element must be focusable...
|
||||||
var target =
|
var target =
|
||||||
this.__keyboard_event_source =
|
this.__keyboard_event_source =
|
||||||
(this.config['keyboard-event-source']
|
this.config['keyboard-event-source'] == null ? this.ribbons.viewer
|
||||||
|| this.config['keyboard-event-source'] == 'window') ?
|
: this.config['keyboard-event-source'] == 'window' ? $(window)
|
||||||
$(window)
|
|
||||||
: this.config['keyboard-event-source'] == 'viewer' ? this.ribbons.viewer
|
: this.config['keyboard-event-source'] == 'viewer' ? this.ribbons.viewer
|
||||||
: this.config['keyboard-event-source'] == 'document' ? $(document)
|
: this.config['keyboard-event-source'] == 'document' ? $(document)
|
||||||
: $(this.config['keyboard-event-source'])
|
: $(this.config['keyboard-event-source'])
|
||||||
@ -646,7 +684,8 @@ var KeyboardActions = actions.Actions({
|
|||||||
// new key
|
// new key
|
||||||
// XXX BUG sections with doc do not show up in title...
|
// XXX BUG sections with doc do not show up in title...
|
||||||
// XXX sub-group by path (???)
|
// XXX sub-group by path (???)
|
||||||
browseKeyboardBindings: ['Interface/Keyboard bindings...',
|
// XXX place this in /Doc/.. (???)
|
||||||
|
browseKeyboardBindings: ['Interface|Help/Keyboard bindings...',
|
||||||
widgets.makeUIDialog(function(path, edit, get_text){
|
widgets.makeUIDialog(function(path, edit, get_text){
|
||||||
var actions = this
|
var actions = this
|
||||||
var keybindings = this.keybindings
|
var keybindings = this.keybindings
|
||||||
@ -836,7 +875,6 @@ var KeyboardActions = actions.Actions({
|
|||||||
|
|
||||||
return dialog
|
return dialog
|
||||||
})],
|
})],
|
||||||
// XXX place this in /Doc/.. (???)
|
|
||||||
editKeyboardBindings: ['Interface/Keyboard bindings editor...',
|
editKeyboardBindings: ['Interface/Keyboard bindings editor...',
|
||||||
widgets.uiDialog(function(path){
|
widgets.uiDialog(function(path){
|
||||||
return this.browseKeyboardBindings(path, true) })],
|
return this.browseKeyboardBindings(path, true) })],
|
||||||
@ -860,6 +898,7 @@ var KeyboardActions = actions.Actions({
|
|||||||
background: 'white',
|
background: 'white',
|
||||||
focusable: true,
|
focusable: true,
|
||||||
})],
|
})],
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
var Keyboard =
|
var Keyboard =
|
||||||
@ -871,6 +910,9 @@ module.Keyboard = core.ImageGridFeatures.Feature({
|
|||||||
depends: [
|
depends: [
|
||||||
'ui'
|
'ui'
|
||||||
],
|
],
|
||||||
|
suggested: [
|
||||||
|
'self-test',
|
||||||
|
],
|
||||||
|
|
||||||
actions: KeyboardActions,
|
actions: KeyboardActions,
|
||||||
|
|
||||||
@ -896,6 +938,10 @@ module.Keyboard = core.ImageGridFeatures.Feature({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}],
|
}],
|
||||||
|
|
||||||
|
['keyHandler',
|
||||||
|
function(res, mode, key, action){
|
||||||
|
action && this.checkKeyboardDoc() }],
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@ -496,7 +496,7 @@ var StatusBarActions = actions.Actions({
|
|||||||
|
|
||||||
// XXX should these be here???
|
// XXX should these be here???
|
||||||
// XXX should this show a dialog???
|
// XXX should this show a dialog???
|
||||||
editStatusBarIndex: ['- Interface/',
|
editStatusBarIndex: ['- Interface/Edit image focus position in statusbar',
|
||||||
function(){
|
function(){
|
||||||
if((this.config['status-bar-index'] || {} )['editable']){
|
if((this.config['status-bar-index'] || {} )['editable']){
|
||||||
this.toggleStatusBar('?') == 'none' && this.toggleStatusBar()
|
this.toggleStatusBar('?') == 'none' && this.toggleStatusBar()
|
||||||
@ -505,7 +505,7 @@ var StatusBarActions = actions.Actions({
|
|||||||
this.ribbons.viewer.find('.global-info .index .position').focus().click()
|
this.ribbons.viewer.find('.global-info .index .position').focus().click()
|
||||||
}
|
}
|
||||||
}],
|
}],
|
||||||
editStatusBarRibbon: ['- Interface/',
|
editStatusBarRibbon: ['- Interface/Edit ribbon focus position in statusbar',
|
||||||
function(){
|
function(){
|
||||||
this.toggleStatusBar('?') == 'none' && this.toggleStatusBar()
|
this.toggleStatusBar('?') == 'none' && this.toggleStatusBar()
|
||||||
|
|
||||||
|
|||||||
@ -775,9 +775,10 @@ var BrowseActionsActions = actions.Actions({
|
|||||||
'Crop/-81:Uncrop all',
|
'Crop/-81:Uncrop all',
|
||||||
'Crop/-82:Uncrop',
|
'Crop/-82:Uncrop',
|
||||||
|
|
||||||
'-50:Interface',
|
'-40:Interface',
|
||||||
'-60:Workspace',
|
'-50:Workspace',
|
||||||
'-70:System',
|
'-60:System',
|
||||||
|
'-70:Help',
|
||||||
'-80:---',
|
'-80:---',
|
||||||
'-90:Development',
|
'-90:Development',
|
||||||
'-90:Test',
|
'-90:Test',
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user