layout: Add more signals.
This commit is contained in:
parent
23ad19d988
commit
ec923e96fc
|
@ -1,11 +1,15 @@
|
||||||
--- Set a widget at a specific index, replace the current one
|
--- Set a widget at a specific index, replace the current one.
|
||||||
|
-- **Signal:** widget::replaced The argument is the new widget and the old one
|
||||||
|
-- and the index.
|
||||||
-- @tparam number index A widget or a widget index
|
-- @tparam number index A widget or a widget index
|
||||||
-- @param widget2 The widget to take the place of the first one
|
-- @param widget2 The widget to take the place of the first one
|
||||||
-- @treturn boolean If the operation is successful
|
-- @treturn boolean If the operation is successful
|
||||||
-- @name set
|
-- @name set
|
||||||
-- @class function
|
-- @class function
|
||||||
|
|
||||||
--- Replace the first instance of `widget` in the layout with `widget2`
|
--- Replace the first instance of `widget` in the layout with `widget2`.
|
||||||
|
-- **Signal:** widget::replaced The argument is the new widget and the old one
|
||||||
|
-- and the index.
|
||||||
-- @param widget The widget to replace
|
-- @param widget The widget to replace
|
||||||
-- @param widget2 The widget to replace `widget` with
|
-- @param widget2 The widget to replace `widget` with
|
||||||
-- @tparam[opt=false] boolean recursive Digg in all compatible layouts to find the widget.
|
-- @tparam[opt=false] boolean recursive Digg in all compatible layouts to find the widget.
|
||||||
|
@ -13,15 +17,18 @@
|
||||||
-- @name replace_widget
|
-- @name replace_widget
|
||||||
-- @class function
|
-- @class function
|
||||||
|
|
||||||
--- Swap 2 widgets in a layout
|
--- Swap 2 widgets in a layout.
|
||||||
|
-- **Signal:** widget::swapped The arguments are both widgets and both (new) indexes.
|
||||||
-- @tparam number index1 The first widget index
|
-- @tparam number index1 The first widget index
|
||||||
-- @tparam number index2 The second widget index
|
-- @tparam number index2 The second widget index
|
||||||
-- @treturn boolean If the operation is successful
|
-- @treturn boolean If the operation is successful
|
||||||
-- @name swap
|
-- @name swap
|
||||||
-- @class function
|
-- @class function
|
||||||
|
|
||||||
--- Swap 2 widgets in a layout
|
--- Swap 2 widgets in a layout.
|
||||||
-- If widget1 is present multiple time, only the first instance is swapped
|
-- If widget1 is present multiple time, only the first instance is swapped
|
||||||
|
-- **Signal:** widget::swapped The arguments are both widgets and both (new) indexes.
|
||||||
|
-- if the layouts not the same, then only `widget::replaced` will be emitted.
|
||||||
-- @param widget1 The first widget
|
-- @param widget1 The first widget
|
||||||
-- @param widget2 The second widget
|
-- @param widget2 The second widget
|
||||||
-- @tparam[opt=false] boolean recursive Digg in all compatible layouts to find the widget.
|
-- @tparam[opt=false] boolean recursive Digg in all compatible layouts to find the widget.
|
||||||
|
@ -34,6 +41,7 @@
|
||||||
-- @property children
|
-- @property children
|
||||||
|
|
||||||
--- Reset a ratio layout. This removes all widgets from the layout.
|
--- Reset a ratio layout. This removes all widgets from the layout.
|
||||||
|
-- **Signal:** widget::reset
|
||||||
-- @param layout The layout you are modifying.
|
-- @param layout The layout you are modifying.
|
||||||
-- @name reset
|
-- @name reset
|
||||||
-- @class function
|
-- @class function
|
||||||
|
|
|
@ -40,7 +40,6 @@
|
||||||
-- @param _buttons The table of buttons that should bind to the widget.
|
-- @param _buttons The table of buttons that should bind to the widget.
|
||||||
-- @function buttons
|
-- @function buttons
|
||||||
|
|
||||||
|
|
||||||
--- When the layout (size) change.
|
--- When the layout (size) change.
|
||||||
-- This signal is emited when the previous results of `:layout()` and `:fit()`
|
-- This signal is emited when the previous results of `:layout()` and `:fit()`
|
||||||
-- are no longer valid.
|
-- are no longer valid.
|
||||||
|
|
|
@ -144,6 +144,8 @@ function fixed:swap(index1, index2)
|
||||||
self:set(index1, widget2)
|
self:set(index1, widget2)
|
||||||
self:set(index2, widget1)
|
self:set(index2, widget1)
|
||||||
|
|
||||||
|
self:emit_signal("widget::swapped", widget1, widget2, index2, index1)
|
||||||
|
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -157,11 +159,17 @@ function fixed:swap_widgets(widget1, widget2, recursive)
|
||||||
if idx1 and l1 and idx2 and l2 and (l1.set or l1.set_widget) and (l2.set or l2.set_widget) then
|
if idx1 and l1 and idx2 and l2 and (l1.set or l1.set_widget) and (l2.set or l2.set_widget) then
|
||||||
if l1.set then
|
if l1.set then
|
||||||
l1:set(idx1, widget2)
|
l1:set(idx1, widget2)
|
||||||
|
if l1 == self then
|
||||||
|
self:emit_signal("widget::swapped", widget1, widget2, idx2, idx1)
|
||||||
|
end
|
||||||
elseif l1.set_widget then
|
elseif l1.set_widget then
|
||||||
l1:set_widget(widget2)
|
l1:set_widget(widget2)
|
||||||
end
|
end
|
||||||
if l2.set then
|
if l2.set then
|
||||||
l2:set(idx2, widget1)
|
l2:set(idx2, widget1)
|
||||||
|
if l2 == self then
|
||||||
|
self:emit_signal("widget::swapped", widget1, widget2, idx2, idx1)
|
||||||
|
end
|
||||||
elseif l2.set_widget then
|
elseif l2.set_widget then
|
||||||
l2:set_widget(widget1)
|
l2:set_widget(widget1)
|
||||||
end
|
end
|
||||||
|
@ -177,14 +185,18 @@ function fixed:set(index, widget2)
|
||||||
|
|
||||||
base.check_widget(widget2)
|
base.check_widget(widget2)
|
||||||
|
|
||||||
|
local w = self._private.widgets[index]
|
||||||
|
|
||||||
self._private.widgets[index] = widget2
|
self._private.widgets[index] = widget2
|
||||||
|
|
||||||
self:emit_signal("widget::layout_changed")
|
self:emit_signal("widget::layout_changed")
|
||||||
|
self:emit_signal("widget::replaced", widget2, w, index)
|
||||||
|
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Insert a new widget in the layout at position `index`
|
--- Insert a new widget in the layout at position `index`
|
||||||
|
-- **Signal:** widget::inserted The arguments are the widget and the index
|
||||||
-- @tparam number index The position
|
-- @tparam number index The position
|
||||||
-- @param widget The widget
|
-- @param widget The widget
|
||||||
-- @treturn boolean If the operation is successful
|
-- @treturn boolean If the operation is successful
|
||||||
|
@ -194,6 +206,7 @@ function fixed:insert(index, widget)
|
||||||
base.check_widget(widget)
|
base.check_widget(widget)
|
||||||
table.insert(self._private.widgets, index, widget)
|
table.insert(self._private.widgets, index, widget)
|
||||||
self:emit_signal("widget::layout_changed")
|
self:emit_signal("widget::layout_changed")
|
||||||
|
self:emit_signal("widget::inserted", widget, #self._private.widgets)
|
||||||
|
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
@ -242,6 +255,7 @@ end
|
||||||
function fixed:reset()
|
function fixed:reset()
|
||||||
self._private.widgets = {}
|
self._private.widgets = {}
|
||||||
self:emit_signal("widget::layout_changed")
|
self:emit_signal("widget::layout_changed")
|
||||||
|
self:emit_signal("widget::reseted")
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Set the layout's fill_space property. If this property is true, the last
|
--- Set the layout's fill_space property. If this property is true, the last
|
||||||
|
|
|
@ -238,6 +238,7 @@ function ratio:ajust_widget_ratio(widget, before, itself, after)
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Add some widgets to the given fixed layout
|
--- Add some widgets to the given fixed layout
|
||||||
|
-- **Signal:** widget::added The argument are the widgets
|
||||||
-- @tparam widget ... Widgets that should be added (must at least be one)
|
-- @tparam widget ... Widgets that should be added (must at least be one)
|
||||||
function ratio:add(...)
|
function ratio:add(...)
|
||||||
-- No table.pack in Lua 5.1 :-(
|
-- No table.pack in Lua 5.1 :-(
|
||||||
|
@ -250,25 +251,31 @@ function ratio:add(...)
|
||||||
|
|
||||||
normalize(self)
|
normalize(self)
|
||||||
self:emit_signal("widget::layout_changed")
|
self:emit_signal("widget::layout_changed")
|
||||||
|
self:emit_signal("widget::added", ...)
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Remove a widget from the layout
|
--- Remove a widget from the layout
|
||||||
|
-- **Signal:** widget::removed The arguments are the widget and the index
|
||||||
-- @tparam number index The widget index to remove
|
-- @tparam number index The widget index to remove
|
||||||
-- @treturn boolean index If the operation is successful
|
-- @treturn boolean index If the operation is successful
|
||||||
function ratio:remove(index)
|
function ratio:remove(index)
|
||||||
if not index or not self._private.widgets[index] then return false end
|
if not index or not self._private.widgets[index] then return false end
|
||||||
|
|
||||||
|
local w = self._private.widgets[index]
|
||||||
|
|
||||||
table.remove(self._private.ratios, index)
|
table.remove(self._private.ratios, index)
|
||||||
table.remove(self._private.widgets, index)
|
table.remove(self._private.widgets, index)
|
||||||
|
|
||||||
normalize(self)
|
normalize(self)
|
||||||
|
|
||||||
self:emit_signal("widget::layout_changed")
|
self:emit_signal("widget::layout_changed")
|
||||||
|
self:emit_signal("widget::removed", w, index)
|
||||||
|
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Insert a new widget in the layout at position `index`
|
--- Insert a new widget in the layout at position `index`
|
||||||
|
-- **Signal:** widget::inserted The arguments are the widget and the index
|
||||||
-- @tparam number index The position
|
-- @tparam number index The position
|
||||||
-- @param widget The widget
|
-- @param widget The widget
|
||||||
function ratio:insert(index, widget)
|
function ratio:insert(index, widget)
|
||||||
|
@ -281,6 +288,7 @@ function ratio:insert(index, widget)
|
||||||
normalize(self)
|
normalize(self)
|
||||||
|
|
||||||
self:emit_signal("widget::layout_changed")
|
self:emit_signal("widget::layout_changed")
|
||||||
|
self:emit_signal("widget::inserted", widget, #self._private.widgets)
|
||||||
end
|
end
|
||||||
|
|
||||||
local function get_layout(dir, widget1, ...)
|
local function get_layout(dir, widget1, ...)
|
||||||
|
|
Loading…
Reference in New Issue