slack: esc to go back to previous screen
This commit is contained in:
parent
1f8341fdd6
commit
028b7aa783
|
@ -221,23 +221,31 @@ fn render-menu screen: (addr screen), _env: (addr environment) {
|
||||||
compare *cursor-in-channels?, 0/false
|
compare *cursor-in-channels?, 0/false
|
||||||
{
|
{
|
||||||
break-if-!=
|
break-if-!=
|
||||||
render-main-menu screen
|
render-main-menu screen, env
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
compare *cursor-in-channels?, 1/true
|
compare *cursor-in-channels?, 1/true
|
||||||
{
|
{
|
||||||
break-if-=
|
break-if-=
|
||||||
render-channels-menu screen
|
render-channels-menu screen, env
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn render-main-menu screen: (addr screen) {
|
fn render-main-menu screen: (addr screen), _env: (addr environment) {
|
||||||
var width/eax: int <- copy 0
|
var width/eax: int <- copy 0
|
||||||
var y/ecx: int <- copy 0
|
var y/ecx: int <- copy 0
|
||||||
width, y <- screen-size screen
|
width, y <- screen-size screen
|
||||||
y <- decrement
|
y <- decrement
|
||||||
set-cursor-position screen, 2/x, y
|
set-cursor-position screen, 2/x, y
|
||||||
|
{
|
||||||
|
var env/edi: (addr environment) <- copy _env
|
||||||
|
var num-tabs/edi: (addr int) <- get env, current-tab-index
|
||||||
|
compare *num-tabs, 0
|
||||||
|
break-if-<=
|
||||||
|
draw-text-rightward-from-cursor screen, " Esc ", width, 0/fg 0xf/bg
|
||||||
|
draw-text-rightward-from-cursor screen, " go back ", width, 0xf/fg, 0/bg
|
||||||
|
}
|
||||||
draw-text-rightward-from-cursor screen, " / ", width, 0/fg 0xf/bg
|
draw-text-rightward-from-cursor screen, " / ", width, 0/fg 0xf/bg
|
||||||
draw-text-rightward-from-cursor screen, " search ", width, 0xf/fg, 0/bg
|
draw-text-rightward-from-cursor screen, " search ", width, 0xf/fg, 0/bg
|
||||||
draw-text-rightward-from-cursor screen, " Tab ", width, 0/fg 0xf/bg
|
draw-text-rightward-from-cursor screen, " Tab ", width, 0/fg 0xf/bg
|
||||||
|
@ -252,12 +260,20 @@ fn render-main-menu screen: (addr screen) {
|
||||||
draw-text-rightward-from-cursor screen, " next page >> ", width, 0xf/fg, 0/bg
|
draw-text-rightward-from-cursor screen, " next page >> ", width, 0xf/fg, 0/bg
|
||||||
}
|
}
|
||||||
|
|
||||||
fn render-channels-menu screen: (addr screen) {
|
fn render-channels-menu screen: (addr screen), _env: (addr environment) {
|
||||||
var width/eax: int <- copy 0
|
var width/eax: int <- copy 0
|
||||||
var y/ecx: int <- copy 0
|
var y/ecx: int <- copy 0
|
||||||
width, y <- screen-size screen
|
width, y <- screen-size screen
|
||||||
y <- decrement
|
y <- decrement
|
||||||
set-cursor-position screen, 2/x, y
|
set-cursor-position screen, 2/x, y
|
||||||
|
{
|
||||||
|
var env/edi: (addr environment) <- copy _env
|
||||||
|
var num-tabs/edi: (addr int) <- get env, current-tab-index
|
||||||
|
compare *num-tabs, 0
|
||||||
|
break-if-<=
|
||||||
|
draw-text-rightward-from-cursor screen, " Esc ", width, 0/fg 0xf/bg
|
||||||
|
draw-text-rightward-from-cursor screen, " go back ", width, 0xf/fg, 0/bg
|
||||||
|
}
|
||||||
draw-text-rightward-from-cursor screen, " / ", width, 0/fg 0xf/bg
|
draw-text-rightward-from-cursor screen, " / ", width, 0/fg 0xf/bg
|
||||||
draw-text-rightward-from-cursor screen, " search ", width, 0xf/fg, 0/bg
|
draw-text-rightward-from-cursor screen, " search ", width, 0xf/fg, 0/bg
|
||||||
draw-text-rightward-from-cursor screen, " Tab ", width, 0/fg 0xf/bg
|
draw-text-rightward-from-cursor screen, " Tab ", width, 0/fg 0xf/bg
|
||||||
|
@ -548,16 +564,23 @@ fn render-json-escaped-unicode-grapheme screen: (addr screen), stream: (addr str
|
||||||
|
|
||||||
fn update-environment _env: (addr environment), key: byte, users: (addr array user), channels: (addr array channel), items: (addr item-list) {
|
fn update-environment _env: (addr environment), key: byte, users: (addr array user), channels: (addr array channel), items: (addr item-list) {
|
||||||
var env/edi: (addr environment) <- copy _env
|
var env/edi: (addr environment) <- copy _env
|
||||||
|
# back in history
|
||||||
|
{
|
||||||
|
compare key, 0x1b/esc
|
||||||
|
break-if-!=
|
||||||
|
previous-tab env
|
||||||
|
return
|
||||||
|
}
|
||||||
# TODO: search
|
# TODO: search
|
||||||
# either toggle the mode
|
|
||||||
var cursor-in-channels?/eax: (addr boolean) <- get env, cursor-in-channels?
|
var cursor-in-channels?/eax: (addr boolean) <- get env, cursor-in-channels?
|
||||||
{
|
{
|
||||||
compare key, 9/tab
|
compare key, 9/tab
|
||||||
break-if-!=
|
break-if-!=
|
||||||
|
# toggle cursor between main panel and channels nav
|
||||||
not *cursor-in-channels?
|
not *cursor-in-channels?
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
# or dispatch based on the mode
|
# dispatch based on where the cursor is
|
||||||
{
|
{
|
||||||
compare *cursor-in-channels?, 0/false
|
compare *cursor-in-channels?, 0/false
|
||||||
break-if-!=
|
break-if-!=
|
||||||
|
@ -618,14 +641,14 @@ fn update-channels-nav _env: (addr environment), key: byte, users: (addr array u
|
||||||
{
|
{
|
||||||
compare key, 0xa/newline
|
compare key, 0xa/newline
|
||||||
break-if-!=
|
break-if-!=
|
||||||
new-channel-page env, *channel-cursor-index, channels
|
new-channel-tab env, *channel-cursor-index, channels
|
||||||
var cursor-in-channels?/eax: (addr boolean) <- get env, cursor-in-channels?
|
var cursor-in-channels?/eax: (addr boolean) <- get env, cursor-in-channels?
|
||||||
copy-to *cursor-in-channels?, 0/false
|
copy-to *cursor-in-channels?, 0/false
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn new-channel-page _env: (addr environment), channel-index: int, _channels: (addr array channel) {
|
fn new-channel-tab _env: (addr environment), channel-index: int, _channels: (addr array channel) {
|
||||||
var env/edi: (addr environment) <- copy _env
|
var env/edi: (addr environment) <- copy _env
|
||||||
var current-tab-index-addr/eax: (addr int) <- get env, current-tab-index
|
var current-tab-index-addr/eax: (addr int) <- get env, current-tab-index
|
||||||
increment *current-tab-index-addr
|
increment *current-tab-index-addr
|
||||||
|
@ -657,6 +680,16 @@ fn new-channel-page _env: (addr environment), channel-index: int, _channels: (ad
|
||||||
copy-to *dest, curr-channel-final-post-index
|
copy-to *dest, curr-channel-final-post-index
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn previous-tab _env: (addr environment) {
|
||||||
|
var env/edi: (addr environment) <- copy _env
|
||||||
|
var current-tab-index-addr/eax: (addr int) <- get env, current-tab-index
|
||||||
|
compare *current-tab-index-addr, 0
|
||||||
|
{
|
||||||
|
break-if-<=
|
||||||
|
decrement *current-tab-index-addr
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn next-item _env: (addr environment), users: (addr array user), channels: (addr array channel), _items: (addr item-list) {
|
fn next-item _env: (addr environment), users: (addr array user), channels: (addr array channel), _items: (addr item-list) {
|
||||||
var env/edi: (addr environment) <- copy _env
|
var env/edi: (addr environment) <- copy _env
|
||||||
var tabs-ah/eax: (addr handle array tab) <- get env, tabs
|
var tabs-ah/eax: (addr handle array tab) <- get env, tabs
|
||||||
|
|
Loading…
Reference in New Issue