added secondary (contextmenu) action to buttons...

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2017-09-06 16:02:29 +03:00
parent e61403a06b
commit e879072675

View File

@ -37,6 +37,17 @@ var browseWalk = require('lib/widget/browse-walk')
// <info>, // optional // <info>, // optional
// <code>, // <code>,
// ], // ],
//
// <button-text>: [
// <class>, // optional
// <info>, // optional
// [
// // primary action (click / tap)...
// <primary>,
// // secondary action (contextmenu -- right-clock / long-tap)...
// <secondary>,
// ]
// ],
// ... // ...
// } // }
var makeButtonControls = var makeButtonControls =
@ -71,23 +82,47 @@ function(context, cls, data){
k = '&nbsp;' k = '&nbsp;'
var cls = 'spacer' var cls = 'spacer'
var doc = '' var doc = ''
var func = function(){} var click = function(){}
var menu = function(){}
// normal element... // normal element...
} else { } else {
var e = data[k].slice() var e = data[k].slice()
var code = e.pop() var primary = e.pop()
code = typeof(code) == typeof('str') ? var secondary = (primary instanceof Array && primary.length > 1) ?
keyboard.parseActionCall(code) primary.pop()
: code : null
secondary = typeof(secondary) == typeof('str') ?
keyboard.parseActionCall(secondary)
: secondary
primary = primary instanceof Array ? primary.shift() : primary
primary = typeof(primary) == typeof('str') ?
keyboard.parseActionCall(primary)
: primary
var func = code instanceof Function ? var click = primary instanceof Function ?
code primary
: function(){ : function(evt){
context[code.action].apply(context, code.arguments) } evt.stopPropagation()
evt.preventDefault()
context[primary.action].apply(context, primary.arguments) }
var menu = secondary instanceof Function ?
secondary
: secondary ?
function(evt){
evt.stopPropagation()
evt.preventDefault()
context[secondary.action].apply(context, secondary.arguments) }
: click
var cls = e[0] || code.action || '' var cls = e[0]
var doc = e[1] || code.doc || e[0] || '' || primary.action
|| ''
var doc = e[1]
|| (primary.doc
+ (secondary ? ' / '+ secondary.doc : ''))
|| e[0]
|| ''
} }
controls controls
@ -99,7 +134,8 @@ function(context, cls, data){
context.showStatusBarInfo context.showStatusBarInfo
&& context.showStatusBarInfo() && context.showStatusBarInfo()
}) })
.click(func)) .click(click)
.on('contextmenu', menu))
}) })
controls controls
@ -1750,6 +1786,7 @@ module.ContextActionMenu = core.ImageGridFeatures.Feature({
//--------------------------------------------------------------------- //---------------------------------------------------------------------
// XXX add context menu action to buttons...
var ButtonsActions = actions.Actions({ var ButtonsActions = actions.Actions({
config: { config: {
'main-buttons-state': 'on', 'main-buttons-state': 'on',
@ -1761,11 +1798,25 @@ var ButtonsActions = actions.Actions({
// <info>, // <info>,
// <code>, // <code>,
// ], // ],
//
// <html>: [
// <css-class>,
// // Button info (optional)
// <info>,
// [
// <primary>,
// <secondary>,
// ]
// ],
// ... // ...
// } // }
//
'main-buttons': { 'main-buttons': {
'&#x2630;': ['menu', 'browseActions -- Action menu...'], '&#x2630;': ['menu', 'browseActions -- Action menu...'],
'&#9714;<sub/><sup/>': ['collections', 'browseCollections -- Collections...'], '&#9714;<sub/><sup/>': ['collections', [
'browseCollections -- Collections...',
'browseActions: "/Collections/" -- Collection menu...',
]],
'C<sub/>': ['crop', 'browseActions: "Crop/" -- Crop menu...'], 'C<sub/>': ['crop', 'browseActions: "Crop/" -- Crop menu...'],
//'&#9636;<sub/>': ['collections', 'browseCollections -- Collections...'], //'&#9636;<sub/>': ['collections', 'browseCollections -- Collections...'],
//'&#9974;': ['view', 'toggleSingleImage -- Single image / ribbon toggle'], //'&#9974;': ['view', 'toggleSingleImage -- Single image / ribbon toggle'],