add github badge like kernel indicators
This commit is contained in:
parent
3c97a8c600
commit
1d10d8b481
@ -1,3 +1,21 @@
|
|||||||
.symbolic-accent-bg {
|
.symbolic-accent-bg {
|
||||||
color: @accent_bg_color;
|
color: @accent_bg_color;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.background-accent-bg {
|
||||||
|
background: @accent_bg_color;
|
||||||
|
border-radius: 10px;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.background-green-bg {
|
||||||
|
background: green;
|
||||||
|
border-radius: 10px;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.background-salmon-bg {
|
||||||
|
background: darksalmon;
|
||||||
|
border-radius: 10px;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
@ -3,13 +3,19 @@ use gtk::prelude::*;
|
|||||||
use adw::*;
|
use adw::*;
|
||||||
use adw::prelude::*;
|
use adw::prelude::*;
|
||||||
use crate::{content, PRETTY_NAME};
|
use crate::{content, PRETTY_NAME};
|
||||||
use content::content;
|
|
||||||
|
|
||||||
pub fn build_ui(app: &adw::Application) {
|
pub fn build_ui(app: &adw::Application) {
|
||||||
let window = adw::ApplicationWindow::new(app);
|
let window = adw::ApplicationWindow::new(app);
|
||||||
|
|
||||||
load_icon_theme(&window);
|
load_icon_theme(&window);
|
||||||
|
|
||||||
|
window.connect_close_request(move |window| {
|
||||||
|
if let Some(application) = window.application() {
|
||||||
|
application.remove_window(window);
|
||||||
|
}
|
||||||
|
glib::Propagation::Proceed
|
||||||
|
});
|
||||||
|
|
||||||
let window_headerbar = adw::HeaderBar::builder()
|
let window_headerbar = adw::HeaderBar::builder()
|
||||||
.title_widget(&adw::WindowTitle::builder().title(PRETTY_NAME).build())
|
.title_widget(&adw::WindowTitle::builder().title(PRETTY_NAME).build())
|
||||||
.build();
|
.build();
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
use gtk::{Align, IconSize};
|
use adw::prelude::ActionRowExt;
|
||||||
|
use gtk::{Align, IconSize, Orientation, SelectionMode, SizeGroupMode};
|
||||||
use gtk::prelude::{BoxExt, WidgetExt};
|
use gtk::prelude::{BoxExt, WidgetExt};
|
||||||
|
|
||||||
pub fn content() -> gtk::Box {
|
pub fn content() -> gtk::Box {
|
||||||
@ -6,19 +7,79 @@ pub fn content() -> gtk::Box {
|
|||||||
let content_box = gtk::Box::builder()
|
let content_box = gtk::Box::builder()
|
||||||
.hexpand(true)
|
.hexpand(true)
|
||||||
.vexpand(true)
|
.vexpand(true)
|
||||||
|
.orientation(Orientation::Vertical)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
let tux_icon = gtk::Image::builder()
|
let tux_icon = gtk::Image::builder()
|
||||||
.pixel_size(128)
|
.pixel_size(128)
|
||||||
.halign(Align::Center)
|
.halign(Align::Center)
|
||||||
.hexpand(true)
|
.hexpand(true)
|
||||||
|
.margin_start(10)
|
||||||
|
.margin_end(10)
|
||||||
|
.margin_bottom(20)
|
||||||
|
.margin_top(20)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
tux_icon.set_icon_name(Some("tux-symbolic"));
|
tux_icon.set_icon_name(Some("tux-symbolic"));
|
||||||
|
|
||||||
tux_icon.add_css_class("symbolic-accent-bg");
|
tux_icon.add_css_class("symbolic-accent-bg");
|
||||||
|
|
||||||
|
let kernel_badges_size_group = gtk::SizeGroup::new(SizeGroupMode::Both);
|
||||||
|
|
||||||
|
content_box.append(&create_kernel_badge("Kernel Branch", "cachy", "background-accent-bg", &kernel_badges_size_group));
|
||||||
|
content_box.append(&create_kernel_badge("Latest Version", "6.9", "background-accent-bg", &kernel_badges_size_group));
|
||||||
|
content_box.append(&create_kernel_badge("Running Version", "6.8.3", "background-salmon-bg", &kernel_badges_size_group));
|
||||||
|
content_box.append(&create_kernel_badge("Running Sched", "sched-ext: rusty", "background-accent-bg", &kernel_badges_size_group));
|
||||||
content_box.append(&tux_icon);
|
content_box.append(&tux_icon);
|
||||||
|
|
||||||
content_box
|
content_box
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn create_kernel_badge(label0_text: &str, label1_text: &str, css_style: &str, group_size: >k::SizeGroup) -> gtk::ListBox {
|
||||||
|
let badge_box = gtk::Box::builder()
|
||||||
|
.build();
|
||||||
|
|
||||||
|
let label0 = gtk::Label::builder()
|
||||||
|
.label(label0_text)
|
||||||
|
.margin_start(5)
|
||||||
|
.margin_end(5)
|
||||||
|
.margin_bottom(1)
|
||||||
|
.margin_top(1)
|
||||||
|
.hexpand(true)
|
||||||
|
.vexpand(true)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
let label_seprator = gtk::Separator::builder()
|
||||||
|
.build();
|
||||||
|
|
||||||
|
let label1 = gtk::Label::builder()
|
||||||
|
.label(label1_text)
|
||||||
|
.margin_start(3)
|
||||||
|
.margin_end(0)
|
||||||
|
.margin_bottom(1)
|
||||||
|
.margin_top(1)
|
||||||
|
.hexpand(true)
|
||||||
|
.vexpand(true)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
label1.add_css_class(css_style);
|
||||||
|
|
||||||
|
badge_box.append(&label0);
|
||||||
|
badge_box.append(&label_seprator);
|
||||||
|
badge_box.append(&label1);
|
||||||
|
|
||||||
|
let boxedlist = gtk::ListBox::builder()
|
||||||
|
.selection_mode(SelectionMode::None)
|
||||||
|
.halign(Align::Center)
|
||||||
|
.valign(Align::End)
|
||||||
|
.margin_start(5)
|
||||||
|
.margin_end(5)
|
||||||
|
.margin_bottom(5)
|
||||||
|
.margin_top(5)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
boxedlist.add_css_class("boxed-list");
|
||||||
|
boxedlist.append(&badge_box);
|
||||||
|
group_size.add_widget(&boxedlist);
|
||||||
|
boxedlist
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user