lib mers_libs/gui base = gui_init() column = base.gui_add(Column: []) text = column.gui_add(Text: "Welcome to MERS GUI!") button = column.gui_add(Button: "This is a button.") second_button = column.gui_add(Button: "This is a second button.") text_state = -2 second_text = column.gui_add(Text: "press the button above to remove this text!") while { for event gui_updates() { switch! event { ButtonPressed([int]) { e = event.noenum() match e { &e.eq(&button) println("First button pressed") &e.eq(&second_button) { // don't match on text_state because we need to change the original from inside the match statement state = text_state match state { // the first, third, fifth, ... time the button is pressed: remove the text text_state.mod(2).eq(0) { if text_state.eq(-2) { // the first time the button is pressed text_state = 0 set_title("keep pressing the button!") } second_text.gui_remove() } // the 2nd, 4th, 6th, ... time the button is pressed: add the text back text_state.eq(1) second_text = column.gui_add(Text: "i'm back!") text_state.eq(3) second_text = column.gui_add(Text: "you can't fully get rid of me!") true { second_text = column.gui_add(Text: "i always come back") // restart (set text_state to 0) text_state = -1 } } text_state = text_state.add(1) } true println("A different button was pressed (unreachable)") } } } } [] }