protected void ScreenChange(SceneData screen, params object[] options) { f.Remove(current); current.Destroy(); current = screen.CreateInstance(options); f.Put(current, 0, 0); f.Remove(side); side.Destroy(); side = new MySideBar(); f.Put(side, 0, 20); side.Show(); if (currentScene == "Logger") { var logScreen = current as LoggerWindow; if (logScreen != null) { side.ExpandEvent += (sender, e) => { logScreen.tv.Visible = false; logScreen.tv.QueueDraw(); }; side.CollapseEvent += (sender, e) => { logScreen.tv.Visible = true; logScreen.tv.QueueDraw(); }; } } else if (currentScene == "Alarms") { var alarmScreen = current as AlarmWindow; if (alarmScreen != null) { side.ExpandEvent += (sender, e) => { alarmScreen.tv.Visible = false; alarmScreen.tv.QueueDraw(); }; side.CollapseEvent += (sender, e) => { alarmScreen.tv.Visible = true; alarmScreen.tv.QueueDraw(); }; } } f.Remove(notification); notification = new MyNotificationBar(); f.Put(notification, 0, 0); notification.Show(); QueueDraw(); }