mirror of
https://github.com/LGUG2Z/komorebi.git
synced 2026-07-20 03:51:16 +02:00
219fa8e14f
This commit adds various widget grouping and transparency options to komorebi-bar, and is comprised of the individual commits listed below, worked on in PR #1108, squashed into one.e8f5952abb* adding RenderConfig, and some test frames on widgets0a5e0a4c0a* no clonea5a7d6906c* comment6a91dd46cd* ignore unused80f0214e47* Group enum, Copy RenderConfigfbe5e2c1f7* Group -> Groupingce49b433f9* GroupingConfigf446a6a45f* "fmt --check" fix (thanks VS)d188222be7* added widget grouping and group module1008ec2031* rounding from settings, and apply_on_side7fff6d29a9* dereferencing655e8ce4c1* AlphaColour, transparency, bar background, more grouping config optionscba0fcd882* added RoundingConfigec5f7dc82d* handling grouping edge case for komorebi focus window12117b832b* changed default values645c46beb8* background color using theme color, AlphaColour.to_color32_or, updating json format for Grouping and RoundingConfig10d2ab21c7* hot-reload on groupingd88774328a* grouping correction on init2cd237fd0d* added shadow to grouping, optional width on grouping stroke4f4b617f26* grouping on bar, converting AlphaColour from_rgba_unmultiplied, simplified grouping3808fcec8f* widget rounding based on grouping, atomic background color, simplified config, style on groupingbe45d14f6d* renamed Side to Alignment, group spacingbe45d14f6d* proper widget spacing based on alignmentb43a5bda69* added widget_spacing to configc18e5f4dbe* test commitcba2b2f7ac* refactoring of render and grouping, widget spacing WIP9311cb00ec* simplify no_spacing36c267246b* correct spacing on komorebi and network widgets (WIP)85a41bf5b2* correct widget spacing on all widgets50b49ccf69* refactoring widget spacing9ec67ad988* account for ui item_spacing when setting the widget_spacinge88a2fd9c0* format
58 lines
1.9 KiB
Rust
58 lines
1.9 KiB
Rust
use crate::battery::Battery;
|
|
use crate::battery::BatteryConfig;
|
|
use crate::cpu::Cpu;
|
|
use crate::cpu::CpuConfig;
|
|
use crate::date::Date;
|
|
use crate::date::DateConfig;
|
|
use crate::komorebi::Komorebi;
|
|
use crate::komorebi::KomorebiConfig;
|
|
use crate::media::Media;
|
|
use crate::media::MediaConfig;
|
|
use crate::memory::Memory;
|
|
use crate::memory::MemoryConfig;
|
|
use crate::network::Network;
|
|
use crate::network::NetworkConfig;
|
|
use crate::render::RenderConfig;
|
|
use crate::storage::Storage;
|
|
use crate::storage::StorageConfig;
|
|
use crate::time::Time;
|
|
use crate::time::TimeConfig;
|
|
use eframe::egui::Context;
|
|
use eframe::egui::Ui;
|
|
use schemars::JsonSchema;
|
|
use serde::Deserialize;
|
|
use serde::Serialize;
|
|
|
|
pub trait BarWidget {
|
|
fn render(&mut self, ctx: &Context, ui: &mut Ui, config: &mut RenderConfig);
|
|
}
|
|
|
|
#[derive(Clone, Debug, Serialize, Deserialize, JsonSchema)]
|
|
pub enum WidgetConfig {
|
|
Battery(BatteryConfig),
|
|
Cpu(CpuConfig),
|
|
Date(DateConfig),
|
|
Komorebi(KomorebiConfig),
|
|
Media(MediaConfig),
|
|
Memory(MemoryConfig),
|
|
Network(NetworkConfig),
|
|
Storage(StorageConfig),
|
|
Time(TimeConfig),
|
|
}
|
|
|
|
impl WidgetConfig {
|
|
pub fn as_boxed_bar_widget(&self) -> Box<dyn BarWidget> {
|
|
match self {
|
|
WidgetConfig::Battery(config) => Box::new(Battery::from(*config)),
|
|
WidgetConfig::Cpu(config) => Box::new(Cpu::from(*config)),
|
|
WidgetConfig::Date(config) => Box::new(Date::from(config.clone())),
|
|
WidgetConfig::Komorebi(config) => Box::new(Komorebi::from(config)),
|
|
WidgetConfig::Media(config) => Box::new(Media::from(*config)),
|
|
WidgetConfig::Memory(config) => Box::new(Memory::from(*config)),
|
|
WidgetConfig::Network(config) => Box::new(Network::from(*config)),
|
|
WidgetConfig::Storage(config) => Box::new(Storage::from(*config)),
|
|
WidgetConfig::Time(config) => Box::new(Time::from(config.clone())),
|
|
}
|
|
}
|
|
}
|