diff --git a/Lua API.html b/Lua API.html
index 04af5d672..f42905d01 100644
--- a/Lua API.html
+++ b/Lua API.html
@@ -2853,6 +2853,9 @@ this may be extended with mouse click support.
icon_width: | If not nil, the specified number of character columns
@@ -2908,6 +2911,9 @@ with the following fields:
list:submit()
Call the on_submit callback, as if the Enter key was handled.
+list:submit2()
+Call the on_submit2 callback, as if the Shift-Enter key was handled.
+
diff --git a/Lua API.rst b/Lua API.rst
index 4087ff0aa..d42a348e4 100644
--- a/Lua API.rst
+++ b/Lua API.rst
@@ -2777,6 +2777,8 @@ It has the following attributes:
:on_select: Selection change callback; called as ``on_select(index,choice)``.
:on_submit: Enter key callback; if specified, the list reacts to the key
and calls it as ``on_submit(index,choice)``.
+:on_submit2: Shift-Enter key callback; if specified, the list reacts to the key
+ and calls it as ``on_submit2(index,choice)``.
:row_height: Height of every row in text lines.
:icon_width: If not *nil*, the specified number of character columns
are reserved to the left of the list item for the icons.
@@ -2826,6 +2828,10 @@ The list supports the following methods:
Call the ``on_submit`` callback, as if the Enter key was handled.
+* ``list:submit2()``
+
+ Call the ``on_submit2`` callback, as if the Shift-Enter key was handled.
+
FilteredList class
------------------
diff --git a/Readme.html b/Readme.html
index cdc4dd631..deea72bef 100644
--- a/Readme.html
+++ b/Readme.html
@@ -3045,11 +3045,11 @@ the job material first using job
as described in workflow documentation above. In this manner, this feature
can be used for troubleshooting jobs that don't match the right constraints.
-After selecting one of the presented outputs, the interface proceeds to the
+ If you select one of the outputs with Enter, the matching constraint is simply
+added to the list. If you use Shift-Enter, the interface proceeds to the
next dialog, which allows you to edit the suggested constraint parameters to
suit your need, and set the item count range.
-If you don't need advanced settings, you can just press 'y' to confirm creation.
diff --git a/Readme.rst b/Readme.rst
index b9844debd..a214a6ecb 100644
--- a/Readme.rst
+++ b/Readme.rst
@@ -2309,15 +2309,13 @@ can be used for troubleshooting jobs that don't match the right constraints.
.. image:: images/workflow-new1.png
-After selecting one of the presented outputs, the interface proceeds to the
+If you select one of the outputs with Enter, the matching constraint is simply
+added to the list. If you use Shift-Enter, the interface proceeds to the
next dialog, which allows you to edit the suggested constraint parameters to
suit your need, and set the item count range.
.. image:: images/workflow-new2.png
-If you don't need advanced settings, you can just press 'y' to confirm creation.
-
-
gui/assign-rack
===============
diff --git a/images/workflow-new1.png b/images/workflow-new1.png
index 25b498bca..50d0e1f42 100644
Binary files a/images/workflow-new1.png and b/images/workflow-new1.png differ
diff --git a/library/lua/gui/dialogs.lua b/library/lua/gui/dialogs.lua
index 0a79b4c3e..fb9b8fd63 100644
--- a/library/lua/gui/dialogs.lua
+++ b/library/lua/gui/dialogs.lua
@@ -152,7 +152,9 @@ ListBox.ATTRS{
with_filter = false,
cursor_pen = DEFAULT_NIL,
select_pen = DEFAULT_NIL,
- on_select = DEFAULT_NIL
+ on_select = DEFAULT_NIL,
+ on_select2 = DEFAULT_NIL,
+ select2_hint = DEFAULT_NIL,
}
function ListBox:preinit(info)
@@ -168,6 +170,16 @@ function ListBox:init(info)
list_widget = widgets.FilteredList
end
+ local on_submit2
+ if self.select2_hint or self.on_select2 then
+ on_submit2 = function(sel, obj)
+ self:dismiss()
+ if self.on_select2 then self.on_select2(sel, obj) end
+ local cb = obj.on_select2
+ if cb then cb(obj, sel) end
+ end
+ end
+
self:addviews{
list_widget{
view_id = 'list',
@@ -182,11 +194,19 @@ function ListBox:init(info)
local cb = obj.on_select or obj[2]
if cb then cb(obj, sel) end
end,
+ on_submit2 = on_submit2,
frame = { l = 0, r = 0 },
}
}
end
+function ListBox:onRenderFrame(dc,rect)
+ ListBox.super.onRenderFrame(self,dc,rect)
+ if self.select2_hint then
+ dc:seek(rect.x1+2,rect.y2):key('SEC_SELECT'):string(': '..self.select2_hint,COLOR_DARKGREY)
+ end
+end
+
function ListBox:getWantedFrameSize()
local mw, mh = InputBox.super.getWantedFrameSize(self)
local list = self.subviews.list
diff --git a/library/lua/gui/widgets.lua b/library/lua/gui/widgets.lua
index 67090e114..145300c59 100644
--- a/library/lua/gui/widgets.lua
+++ b/library/lua/gui/widgets.lua
@@ -384,6 +384,7 @@ List.ATTRS{
inactive_pen = DEFAULT_NIL,
on_select = DEFAULT_NIL,
on_submit = DEFAULT_NIL,
+ on_submit2 = DEFAULT_NIL,
row_height = 1,
scroll_keys = STANDARDSCROLL,
icon_width = DEFAULT_NIL,
@@ -542,10 +543,19 @@ function List:submit()
end
end
+function List:submit2()
+ if self.on_submit2 and #self.choices > 0 then
+ self.on_submit2(self:getSelected())
+ end
+end
+
function List:onInput(keys)
if self.on_submit and keys.SELECT then
self:submit()
return true
+ elseif self.on_submit2 and keys.SEC_SELECT then
+ self:submit2()
+ return true
else
for k,v in pairs(self.scroll_keys) do
if keys[k] then
@@ -608,6 +618,11 @@ function FilteredList:init(info)
return info.on_submit(self:getSelected())
end
end
+ if info.on_submit2 then
+ self.list.on_submit2 = function()
+ return info.on_submit2(self:getSelected())
+ end
+ end
self.not_found = Label{
visible = false,
text = info.not_found_label or 'No matches',
@@ -634,6 +649,10 @@ function FilteredList:submit()
return self.list:submit()
end
+function FilteredList:submit2()
+ return self.list:submit2()
+end
+
function FilteredList:canSubmit()
return not self.not_found.visible
end
diff --git a/scripts/gui/workflow.lua b/scripts/gui/workflow.lua
index 80c05d296..a387e64b9 100644
--- a/scripts/gui/workflow.lua
+++ b/scripts/gui/workflow.lua
@@ -552,18 +552,22 @@ function JobConstraints:onNewConstraint()
table.insert(choices, { text = itemstr..' of '..matstr, obj = cons })
end
- dlg.showListPrompt(
- 'New limit',
- 'Select one of the possible outputs:',
- COLOR_WHITE,
- choices,
- function(idx,item)
+ dlg.ListBox{
+ frame_title = 'New limit',
+ text = 'Select one of the possible outputs:',
+ text_pen = COLOR_WHITE,
+ choices = choices,
+ on_select = function(idx,item)
+ self:saveConstraint(item.obj)
+ end,
+ select2_hint = 'Advanced',
+ on_select2 = function(idx,item)
NewConstraint{
constraint = item.obj,
on_submit = self:callback('saveConstraint')
}:show()
- end
- )
+ end,
+ }:show()
end
function JobConstraints:onDeleteConstraint()
|
---|