// Copyright 2023 The Grim Developers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. use std::any::Any; use eframe::Frame; use egui::Context; use crate::gui::PlatformCallbacks; use crate::gui::screens::{Screen}; pub struct PlatformApp { pub(crate) screens: Screens, pub(crate) platform: Platform, } pub struct Screens { screens: Vec>, current: String, } impl Default for Screens { fn default() -> Self { Self::from_screens(vec![ Box::new(super::screens::Wallets::default()) ]) } } impl Screens { pub fn from_screens(screens: Vec>) -> Self { let current = screens[0].name().to_string(); Self { screens, current, } } pub fn ui(&mut self, ctx: &Context, frame: &mut Frame, cb: &dyn PlatformCallbacks) { } }