1
0
Fork 0
mirror of https://github.com/Zedfrigg/ironbar.git synced 2025-07-01 10:41:03 +02:00

refactor: pass context into modules controllers

This paves the way to keep things tidier for the next refactors.
This commit is contained in:
Jake Stanger 2024-01-07 23:42:34 +00:00
parent 651a27b143
commit 57b57ed002
No known key found for this signature in database
GPG key ID: C51FC8F9CB0BEA61
13 changed files with 30 additions and 20 deletions

View file

@ -72,11 +72,12 @@ impl Module<Button> for ClipboardModule {
fn spawn_controller( fn spawn_controller(
&self, &self,
_info: &ModuleInfo, _info: &ModuleInfo,
tx: mpsc::Sender<ModuleUpdateEvent<Self::SendMessage>>, context: &WidgetContext<Self::SendMessage, Self::ReceiveMessage>,
mut rx: mpsc::Receiver<Self::ReceiveMessage>, mut rx: mpsc::Receiver<Self::ReceiveMessage>,
) -> color_eyre::Result<()> { ) -> color_eyre::Result<()> {
let max_items = self.max_items; let max_items = self.max_items;
let tx = context.tx.clone();
// listen to clipboard events // listen to clipboard events
spawn(async move { spawn(async move {
let mut rx = { let mut rx = {

View file

@ -78,9 +78,10 @@ impl Module<Button> for ClockModule {
fn spawn_controller( fn spawn_controller(
&self, &self,
_info: &ModuleInfo, _info: &ModuleInfo,
tx: mpsc::Sender<ModuleUpdateEvent<Self::SendMessage>>, context: &WidgetContext<Self::SendMessage, Self::ReceiveMessage>,
_rx: mpsc::Receiver<Self::ReceiveMessage>, _rx: mpsc::Receiver<Self::ReceiveMessage>,
) -> Result<()> { ) -> Result<()> {
let tx = context.tx.clone();
spawn(async move { spawn(async move {
loop { loop {
let date = Local::now(); let date = Local::now();

View file

@ -158,9 +158,10 @@ impl Module<gtk::Box> for CustomModule {
fn spawn_controller( fn spawn_controller(
&self, &self,
_info: &ModuleInfo, _info: &ModuleInfo,
tx: mpsc::Sender<ModuleUpdateEvent<Self::SendMessage>>, context: &WidgetContext<Self::SendMessage, Self::ReceiveMessage>,
mut rx: mpsc::Receiver<Self::ReceiveMessage>, mut rx: mpsc::Receiver<Self::ReceiveMessage>,
) -> Result<()> { ) -> Result<()> {
let tx = context.tx.clone();
spawn(async move { spawn(async move {
while let Some(event) = rx.recv().await { while let Some(event) = rx.recv().await {
if event.cmd.starts_with('!') { if event.cmd.starts_with('!') {

View file

@ -57,9 +57,10 @@ impl Module<gtk::Box> for FocusedModule {
fn spawn_controller( fn spawn_controller(
&self, &self,
_info: &ModuleInfo, _info: &ModuleInfo,
tx: Sender<ModuleUpdateEvent<Self::SendMessage>>, context: &WidgetContext<Self::SendMessage, Self::ReceiveMessage>,
_rx: Receiver<Self::ReceiveMessage>, _rx: Receiver<Self::ReceiveMessage>,
) -> Result<()> { ) -> Result<()> {
let tx = context.tx.clone();
spawn(async move { spawn(async move {
let (mut wlrx, handles) = { let (mut wlrx, handles) = {
let wl = wayland::get_client(); let wl = wayland::get_client();

View file

@ -36,9 +36,10 @@ impl Module<Label> for LabelModule {
fn spawn_controller( fn spawn_controller(
&self, &self,
_info: &ModuleInfo, _info: &ModuleInfo,
tx: mpsc::Sender<ModuleUpdateEvent<Self::SendMessage>>, context: &WidgetContext<Self::SendMessage, Self::ReceiveMessage>,
_rx: mpsc::Receiver<Self::ReceiveMessage>, _rx: mpsc::Receiver<Self::ReceiveMessage>,
) -> Result<()> { ) -> Result<()> {
let tx = context.tx.clone();
dynamic_string(&self.label, move |string| { dynamic_string(&self.label, move |string| {
try_send!(tx, ModuleUpdateEvent::Update(string)); try_send!(tx, ModuleUpdateEvent::Update(string));
}); });

View file

@ -90,7 +90,7 @@ impl Module<gtk::Box> for LauncherModule {
fn spawn_controller( fn spawn_controller(
&self, &self,
_info: &ModuleInfo, _info: &ModuleInfo,
tx: mpsc::Sender<ModuleUpdateEvent<Self::SendMessage>>, context: &WidgetContext<Self::SendMessage, Self::ReceiveMessage>,
mut rx: mpsc::Receiver<Self::ReceiveMessage>, mut rx: mpsc::Receiver<Self::ReceiveMessage>,
) -> crate::Result<()> { ) -> crate::Result<()> {
let items = self let items = self
@ -111,7 +111,7 @@ impl Module<gtk::Box> for LauncherModule {
let items = arc_mut!(items); let items = arc_mut!(items);
let items2 = Arc::clone(&items); let items2 = Arc::clone(&items);
let tx2 = tx.clone();
spawn(async move { spawn(async move {
let items = items2; let items = items2;
let tx = tx2; let tx = tx2;

View file

@ -162,7 +162,7 @@ where
fn spawn_controller( fn spawn_controller(
&self, &self,
info: &ModuleInfo, info: &ModuleInfo,
tx: mpsc::Sender<ModuleUpdateEvent<Self::SendMessage>>, context: &WidgetContext<Self::SendMessage, Self::ReceiveMessage>,
rx: mpsc::Receiver<Self::ReceiveMessage>, rx: mpsc::Receiver<Self::ReceiveMessage>,
) -> Result<()> ) -> Result<()>
where where
@ -208,8 +208,6 @@ where
let (tx, rx) = broadcast::channel(64); let (tx, rx) = broadcast::channel(64);
module.spawn_controller(info, ui_tx.clone(), controller_rx)?;
let context = WidgetContext { let context = WidgetContext {
id, id,
tx: ui_tx, tx: ui_tx,
@ -218,6 +216,8 @@ where
_update_rx: rx, _update_rx: rx,
}; };
module.spawn_controller(info, &context, controller_rx)?;
let module_name = TModule::name(); let module_name = TModule::name();
let instance_name = name.unwrap_or_else(|| module_name.to_string()); let instance_name = name.unwrap_or_else(|| module_name.to_string());

View file

@ -90,7 +90,7 @@ impl Module<Button> for MusicModule {
fn spawn_controller( fn spawn_controller(
&self, &self,
_info: &ModuleInfo, _info: &ModuleInfo,
tx: mpsc::Sender<ModuleUpdateEvent<Self::SendMessage>>, context: &WidgetContext<Self::SendMessage, Self::ReceiveMessage>,
mut rx: mpsc::Receiver<Self::ReceiveMessage>, mut rx: mpsc::Receiver<Self::ReceiveMessage>,
) -> Result<()> { ) -> Result<()> {
let format = self.format.clone(); let format = self.format.clone();
@ -103,6 +103,7 @@ impl Module<Button> for MusicModule {
let player_type = self.player_type; let player_type = self.player_type;
let host = self.host.clone(); let host = self.host.clone();
let music_dir = self.music_dir.clone(); let music_dir = self.music_dir.clone();
let tx = context.tx.clone();
spawn(async move { spawn(async move {
loop { loop {

View file

@ -6,7 +6,7 @@ use color_eyre::{Help, Report, Result};
use gtk::prelude::*; use gtk::prelude::*;
use gtk::Label; use gtk::Label;
use serde::Deserialize; use serde::Deserialize;
use tokio::sync::mpsc::{Receiver, Sender}; use tokio::sync::mpsc;
use tracing::error; use tracing::error;
#[derive(Debug, Deserialize, Clone)] #[derive(Debug, Deserialize, Clone)]
@ -55,11 +55,12 @@ impl Module<Label> for ScriptModule {
fn spawn_controller( fn spawn_controller(
&self, &self,
_info: &ModuleInfo, _info: &ModuleInfo,
tx: Sender<ModuleUpdateEvent<Self::SendMessage>>, context: &WidgetContext<Self::SendMessage, Self::ReceiveMessage>,
_rx: Receiver<Self::ReceiveMessage>, _rx: mpsc::Receiver<Self::ReceiveMessage>,
) -> Result<()> { ) -> Result<()> {
let script: Script = self.into(); let script: Script = self.into();
let tx = context.tx.clone();
spawn(async move { spawn(async move {
script.run(None, move |out, _| match out { script.run(None, move |out, _| match out {
OutputStream::Stdout(stdout) => { OutputStream::Stdout(stdout) => {

View file

@ -11,7 +11,6 @@ use std::collections::HashMap;
use std::time::Duration; use std::time::Duration;
use sysinfo::{ComponentExt, CpuExt, DiskExt, NetworkExt, RefreshKind, System, SystemExt}; use sysinfo::{ComponentExt, CpuExt, DiskExt, NetworkExt, RefreshKind, System, SystemExt};
use tokio::sync::mpsc; use tokio::sync::mpsc;
use tokio::sync::mpsc::{Receiver, Sender};
use tokio::time::sleep; use tokio::time::sleep;
#[derive(Debug, Deserialize, Clone)] #[derive(Debug, Deserialize, Clone)]
@ -124,8 +123,8 @@ impl Module<gtk::Box> for SysInfoModule {
fn spawn_controller( fn spawn_controller(
&self, &self,
_info: &ModuleInfo, _info: &ModuleInfo,
tx: Sender<ModuleUpdateEvent<Self::SendMessage>>, context: &WidgetContext<Self::SendMessage, Self::ReceiveMessage>,
_rx: Receiver<Self::ReceiveMessage>, _rx: mpsc::Receiver<Self::ReceiveMessage>,
) -> Result<()> { ) -> Result<()> {
let interval = self.interval; let interval = self.interval;
@ -159,6 +158,7 @@ impl Module<gtk::Box> for SysInfoModule {
spawn_refresh!(RefreshType::Network, networks); spawn_refresh!(RefreshType::Network, networks);
spawn_refresh!(RefreshType::System, system); spawn_refresh!(RefreshType::System, system);
let tx = context.tx.clone();
spawn(async move { spawn(async move {
let mut format_info = HashMap::new(); let mut format_info = HashMap::new();

View file

@ -168,10 +168,11 @@ impl Module<MenuBar> for TrayModule {
fn spawn_controller( fn spawn_controller(
&self, &self,
_info: &ModuleInfo, _info: &ModuleInfo,
tx: Sender<ModuleUpdateEvent<Self::SendMessage>>, context: &WidgetContext<Self::SendMessage, Self::ReceiveMessage>,
mut rx: Receiver<Self::ReceiveMessage>, mut rx: Receiver<Self::ReceiveMessage>,
) -> Result<()> { ) -> Result<()> {
let client = await_sync(async { get_tray_event_client().await }); let client = await_sync(async { get_tray_event_client().await });
let tx = context.tx.clone();
let (tray_tx, mut tray_rx) = client.subscribe(); let (tray_tx, mut tray_rx) = client.subscribe();
// listen to tray updates // listen to tray updates

View file

@ -61,9 +61,10 @@ impl Module<gtk::Button> for UpowerModule {
fn spawn_controller( fn spawn_controller(
&self, &self,
_info: &ModuleInfo, _info: &ModuleInfo,
tx: mpsc::Sender<ModuleUpdateEvent<Self::SendMessage>>, context: &WidgetContext<Self::SendMessage, Self::ReceiveMessage>,
_rx: mpsc::Receiver<Self::ReceiveMessage>, _rx: mpsc::Receiver<Self::ReceiveMessage>,
) -> Result<()> { ) -> Result<()> {
let tx = context.tx.clone();
spawn(async move { spawn(async move {
// await_sync due to strange "higher-ranked lifetime error" // await_sync due to strange "higher-ranked lifetime error"
let display_proxy = await_sync(async move { get_display_proxy().await }); let display_proxy = await_sync(async move { get_display_proxy().await });

View file

@ -151,9 +151,10 @@ impl Module<gtk::Box> for WorkspacesModule {
fn spawn_controller( fn spawn_controller(
&self, &self,
_info: &ModuleInfo, _info: &ModuleInfo,
tx: Sender<ModuleUpdateEvent<Self::SendMessage>>, context: &WidgetContext<Self::SendMessage, Self::ReceiveMessage>,
mut rx: Receiver<Self::ReceiveMessage>, mut rx: Receiver<Self::ReceiveMessage>,
) -> Result<()> { ) -> Result<()> {
let tx = context.tx.clone();
// Subscribe & send events // Subscribe & send events
spawn(async move { spawn(async move {
let mut srx = { let mut srx = {