mirror of
https://github.com/notwa/mm
synced 2025-02-05 13:23:23 -08:00
working back/close buttons
This commit is contained in:
parent
4c00f0b3fb
commit
e75a9be4e3
1 changed files with 30 additions and 12 deletions
|
@ -5,7 +5,7 @@ end
|
||||||
MenuItem = Class()
|
MenuItem = Class()
|
||||||
Text = Class(MenuItem)
|
Text = Class(MenuItem)
|
||||||
Back = Class(Text)
|
Back = Class(Text)
|
||||||
Close = Back -- FIXME
|
Close = Class(Text)
|
||||||
LinkTo = Class(Text)
|
LinkTo = Class(Text)
|
||||||
|
|
||||||
Active = Class(Text)
|
Active = Class(Text)
|
||||||
|
@ -70,7 +70,14 @@ function Back:init()
|
||||||
Text.init(self, 'back')
|
Text.init(self, 'back')
|
||||||
end
|
end
|
||||||
function Back:run()
|
function Back:run()
|
||||||
return nil -- FIXME
|
return 'back'
|
||||||
|
end
|
||||||
|
|
||||||
|
function Close:init()
|
||||||
|
Text.init(self, 'close')
|
||||||
|
end
|
||||||
|
function Close:run()
|
||||||
|
return 'close'
|
||||||
end
|
end
|
||||||
|
|
||||||
function LinkTo:init(text, submenu)
|
function LinkTo:init(text, submenu)
|
||||||
|
@ -269,24 +276,35 @@ end
|
||||||
MenuHandler = Class()
|
MenuHandler = Class()
|
||||||
function MenuHandler:init(main_menu)
|
function MenuHandler:init(main_menu)
|
||||||
self.main_menu = main_menu
|
self.main_menu = main_menu
|
||||||
|
self.backstack = {}
|
||||||
self.menu = nil
|
self.menu = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function MenuHandler:push(menu)
|
||||||
|
table.insert(self.backstack, menu)
|
||||||
|
end
|
||||||
|
|
||||||
|
function MenuHandler:pop()
|
||||||
|
return table.remove(self.backstack)
|
||||||
|
end
|
||||||
|
|
||||||
function MenuHandler:update(ctrl, pressed)
|
function MenuHandler:update(ctrl, pressed)
|
||||||
local delay = false
|
|
||||||
if not self.menu and pressed.enter then
|
if not self.menu and pressed.enter then
|
||||||
delay = true
|
|
||||||
self.menu = self.main_menu
|
self.menu = self.main_menu
|
||||||
self.menu:focus()
|
self.menu:focus()
|
||||||
end
|
elseif self.menu then
|
||||||
|
local new_menu = self.menu:navigate(ctrl, pressed)
|
||||||
if self.menu and not delay then
|
if new_menu == 'back' then
|
||||||
local old = self.menu
|
new_menu = self:pop()
|
||||||
self.menu = self.menu:navigate(ctrl, pressed)
|
elseif new_menu == 'close' then
|
||||||
if self.menu ~= old then
|
self.backstack = {}
|
||||||
old:unfocus()
|
new_menu = nil
|
||||||
if self.menu then self.menu:focus() end
|
elseif new_menu ~= self.menu then
|
||||||
|
self:push(self.menu)
|
||||||
|
self.menu:unfocus()
|
||||||
end
|
end
|
||||||
|
if new_menu and new_menu ~= self.menu then new_menu:focus() end
|
||||||
|
self.menu = new_menu
|
||||||
end
|
end
|
||||||
if self.menu then self.menu:draw(T_TL, 0) end
|
if self.menu then self.menu:draw(T_TL, 0) end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Reference in a new issue