mirror of
				https://github.com/Zedfrigg/ironbar.git
				synced 2025-11-04 07:21:54 +01: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
		Add a link
		
	
		Reference in a new issue