mirror of
https://github.com/Zedfrigg/ironbar.git
synced 2025-04-19 19:34:24 +02:00
feat: Add orientation support for clock
This commit is contained in:
parent
751bb7b95e
commit
702b0a63bf
3 changed files with 28 additions and 6 deletions
|
@ -40,6 +40,19 @@ pub enum TransitionType {
|
|||
SlideEnd,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize, Clone)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
pub enum ModuleOrientation {
|
||||
Horizontal,
|
||||
Vertical,
|
||||
}
|
||||
|
||||
impl Default for ModuleOrientation {
|
||||
fn default() -> Self {
|
||||
ModuleOrientation::Horizontal
|
||||
}
|
||||
}
|
||||
|
||||
impl TransitionType {
|
||||
pub const fn to_revealer_transition_type(
|
||||
&self,
|
||||
|
|
|
@ -34,7 +34,7 @@ use color_eyre::Result;
|
|||
use serde::Deserialize;
|
||||
use std::collections::HashMap;
|
||||
|
||||
pub use self::common::{CommonConfig, TransitionType};
|
||||
pub use self::common::{CommonConfig, ModuleOrientation, TransitionType};
|
||||
pub use self::truncate::TruncateMode;
|
||||
|
||||
#[derive(Debug, Deserialize, Clone)]
|
||||
|
|
|
@ -8,7 +8,7 @@ use serde::Deserialize;
|
|||
use tokio::sync::{broadcast, mpsc};
|
||||
use tokio::time::sleep;
|
||||
|
||||
use crate::config::CommonConfig;
|
||||
use crate::config::{CommonConfig, ModuleOrientation};
|
||||
use crate::gtk_helpers::IronbarGtkExt;
|
||||
use crate::modules::{
|
||||
Module, ModuleInfo, ModuleParts, ModulePopup, ModuleUpdateEvent, PopupButton, WidgetContext,
|
||||
|
@ -31,6 +31,9 @@ pub struct ClockModule {
|
|||
#[serde(default = "default_locale")]
|
||||
locale: String,
|
||||
|
||||
#[serde(default)]
|
||||
orientation: ModuleOrientation,
|
||||
|
||||
#[serde(flatten)]
|
||||
pub common: Option<CommonConfig>,
|
||||
}
|
||||
|
@ -41,6 +44,7 @@ impl Default for ClockModule {
|
|||
format: default_format(),
|
||||
format_popup: default_popup_format(),
|
||||
locale: default_locale(),
|
||||
orientation: ModuleOrientation::Horizontal,
|
||||
common: Some(CommonConfig::default()),
|
||||
}
|
||||
}
|
||||
|
@ -97,10 +101,15 @@ impl Module<Button> for ClockModule {
|
|||
info: &ModuleInfo,
|
||||
) -> Result<ModuleParts<Button>> {
|
||||
let button = Button::new();
|
||||
let label = Label::builder()
|
||||
let label = if matches!(self.orientation, ModuleOrientation::Vertical) {
|
||||
Label::builder()
|
||||
.angle(info.bar_position.get_angle())
|
||||
.use_markup(true)
|
||||
.build();
|
||||
} else {
|
||||
Label::builder()
|
||||
.use_markup(true)
|
||||
|
||||
}.build();
|
||||
button.add(&label);
|
||||
|
||||
let tx = context.tx.clone();
|
||||
|
|
Loading…
Add table
Reference in a new issue