Move widget trait to widgets

This commit is contained in:
Elias Projahn 2021-02-02 11:38:22 +01:00
parent eac168880d
commit d92fd419d3
4 changed files with 19 additions and 8 deletions

View file

@ -1,4 +1,5 @@
use crate::backend::Backend; use crate::backend::Backend;
use crate::widgets::Widget;
use futures_channel::oneshot; use futures_channel::oneshot;
use futures_channel::oneshot::{Receiver, Sender}; use futures_channel::oneshot::{Receiver, Sender};
use glib::clone; use glib::clone;
@ -16,12 +17,6 @@ pub trait Screen<I, O>: Widget {
fn new(input: I, navigation_handle: NavigationHandle<O>) -> Rc<Self> where Self: Sized; fn new(input: I, navigation_handle: NavigationHandle<O>) -> Rc<Self> where Self: Sized;
} }
/// Something that can be represented as a GTK widget.
pub trait Widget {
/// Get the widget.
fn get_widget(&self) -> gtk::Widget;
}
/// An accessor to navigation functionality for screens. /// An accessor to navigation functionality for screens.
pub struct NavigationHandle<O> { pub struct NavigationHandle<O> {
/// The backend, in case the screen needs it. /// The backend, in case the screen needs it.

View file

@ -1,7 +1,8 @@
use super::register::RegisterDialog; use super::register::RegisterDialog;
use crate::push; use crate::push;
use crate::backend::{Backend, LoginData}; use crate::backend::{Backend, LoginData};
use crate::navigator::{NavigationHandle, Screen, Widget}; use crate::navigator::{NavigationHandle, Screen};
use crate::widgets::Widget;
use glib::clone; use glib::clone;
use gtk::prelude::*; use gtk::prelude::*;
use gtk_macros::get_widget; use gtk_macros::get_widget;

View file

@ -1,5 +1,6 @@
use crate::backend::{Backend, LoginData, UserRegistration}; use crate::backend::{Backend, LoginData, UserRegistration};
use crate::navigator::{NavigationHandle, Screen, Widget}; use crate::navigator::{NavigationHandle, Screen};
use crate::widgets::Widget;
use glib::clone; use glib::clone;
use gtk::prelude::*; use gtk::prelude::*;
use gtk_macros::get_widget; use gtk_macros::get_widget;

View file

@ -1,3 +1,5 @@
use gtk::prelude::*;
pub mod editor; pub mod editor;
pub use editor::*; pub use editor::*;
@ -29,3 +31,15 @@ pub mod upload_section;
pub use upload_section::*; pub use upload_section::*;
mod indexed_list_model; mod indexed_list_model;
/// Something that can be represented as a GTK widget.
pub trait Widget {
/// Get the widget.
fn get_widget(&self) -> gtk::Widget;
}
impl<W: IsA<gtk::Widget>> Widget for W {
fn get_widget(&self) -> gtk::Widget {
self.clone().upcast()
}
}