Create the basic user interface mockup for a GM control panel #63
|
@ -13,7 +13,7 @@ futures = { version = "0.3" }
|
||||||
gio = { version = "0.17" }
|
gio = { version = "0.17" }
|
||||||
glib = { version = "0.17" }
|
glib = { version = "0.17" }
|
||||||
gdk = { version = "0.6", package = "gdk4" }
|
gdk = { version = "0.6", package = "gdk4" }
|
||||||
gtk = { version = "0.6", package = "gtk4" }
|
gtk = { version = "0.6", package = "gtk4", features = [ "v4_6" ] }
|
||||||
serde = { version = "1" }
|
serde = { version = "1" }
|
||||||
serde_json = { version = "*" }
|
serde_json = { version = "*" }
|
||||||
tokio = { version = "1", features = ["full"] }
|
tokio = { version = "1", features = ["full"] }
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
.playlist-card {
|
.playlist-card {
|
||||||
margin: 8px;
|
margin: 8px;
|
||||||
padding: 8px;
|
padding: 8px;
|
||||||
|
min-width: 100px;
|
||||||
|
min-height: 100px;
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@ use std::iter::Iterator;
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct ApplicationWindow {
|
pub struct ApplicationWindow {
|
||||||
pub window: adw::ApplicationWindow,
|
pub window: adw::ApplicationWindow,
|
||||||
pub grid: gtk::Grid,
|
pub layout: gtk::FlowBox,
|
||||||
pub playlists: Vec<PlaylistCard>,
|
pub playlists: Vec<PlaylistCard>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,6 +16,7 @@ impl ApplicationWindow {
|
||||||
let window = adw::ApplicationWindow::builder()
|
let window = adw::ApplicationWindow::builder()
|
||||||
.application(app)
|
.application(app)
|
||||||
.title("GM-control-panel")
|
.title("GM-control-panel")
|
||||||
|
.width_request(500)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
let stylesheet = String::from_utf8(
|
let stylesheet = String::from_utf8(
|
||||||
|
@ -33,7 +34,7 @@ impl ApplicationWindow {
|
||||||
let context = window.style_context();
|
let context = window.style_context();
|
||||||
context.add_provider(&provider, STYLE_PROVIDER_PRIORITY_USER);
|
context.add_provider(&provider, STYLE_PROVIDER_PRIORITY_USER);
|
||||||
|
|
||||||
let grid = gtk::Grid::new();
|
let layout = gtk::FlowBox::new();
|
||||||
|
|
||||||
let playlists: Vec<PlaylistCard> = vec![
|
let playlists: Vec<PlaylistCard> = vec![
|
||||||
"Creepy Cathedral",
|
"Creepy Cathedral",
|
||||||
|
@ -50,15 +51,13 @@ impl ApplicationWindow {
|
||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
playlists.iter().enumerate().for_each(|(i, card)| {
|
playlists.iter().for_each(|card| layout.append(card));
|
||||||
grid.attach(card, 0, i as i32, 1, 1);
|
|
||||||
});
|
|
||||||
|
|
||||||
window.set_content(Some(&grid));
|
window.set_content(Some(&layout));
|
||||||
|
|
||||||
Self {
|
Self {
|
||||||
window,
|
window,
|
||||||
grid,
|
layout,
|
||||||
playlists,
|
playlists,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,12 +37,6 @@ impl PlaylistCard {
|
||||||
s.set_orientation(gtk::Orientation::Vertical);
|
s.set_orientation(gtk::Orientation::Vertical);
|
||||||
s.add_css_class("playlist-card");
|
s.add_css_class("playlist-card");
|
||||||
s.add_css_class("card");
|
s.add_css_class("card");
|
||||||
/*
|
|
||||||
s.set_margin_start(8);
|
|
||||||
s.set_margin_end(8);
|
|
||||||
s.set_margin_top(8);
|
|
||||||
s.set_margin_bottom(8);
|
|
||||||
*/
|
|
||||||
|
|
||||||
s.append(&s.imp().name);
|
s.append(&s.imp().name);
|
||||||
s.append(&s.imp().playing);
|
s.append(&s.imp().playing);
|
||||||
|
|
Loading…
Reference in New Issue