mirror of
https://github.com/johrpan/musicus.git
synced 2025-10-26 19:57:25 +01:00
Move widget trait to widgets
This commit is contained in:
parent
eac168880d
commit
d92fd419d3
4 changed files with 19 additions and 8 deletions
|
|
@ -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.
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue