1
0
Fork 0
mirror of https://github.com/Zedfrigg/ironbar.git synced 2025-08-16 14:21:03 +02:00

refactor(module): remove redundant into_popup parameters

This commit is contained in:
Jake Stanger 2025-05-19 15:57:28 +01:00
parent 09ba3816d6
commit 8575300044
No known key found for this signature in database
GPG key ID: C51FC8F9CB0BEA61
8 changed files with 41 additions and 77 deletions

View file

@ -17,7 +17,7 @@ use gtk::{Button, EventBox, Image, Label, Orientation, RadioButton, Widget};
use serde::Deserialize;
use std::collections::HashMap;
use std::ops::Deref;
use tokio::sync::{broadcast, mpsc};
use tokio::sync::mpsc;
use tracing::{debug, error};
#[derive(Debug, Deserialize, Clone)]
@ -158,9 +158,8 @@ impl Module<Button> for ClipboardModule {
tx.send_spawn(ModuleUpdateEvent::TogglePopup(button.popup_id()));
});
let rx = context.subscribe();
let popup = self
.into_popup(context.controller_tx.clone(), rx, context, info)
.into_popup(context, info)
.into_popup_parts(vec![&button]);
Ok(ModuleParts::new(button.deref().clone(), popup))
@ -168,9 +167,7 @@ impl Module<Button> for ClipboardModule {
fn into_popup(
self,
tx: mpsc::Sender<Self::ReceiveMessage>,
rx: broadcast::Receiver<Self::SendMessage>,
_context: WidgetContext<Self::SendMessage, Self::ReceiveMessage>,
context: WidgetContext<Self::SendMessage, Self::ReceiveMessage>,
_info: &ModuleInfo,
) -> Option<gtk::Box>
where
@ -188,7 +185,7 @@ impl Module<Button> for ClipboardModule {
{
let hidden_option = hidden_option.clone();
rx.recv_glib(move |event| {
context.subscribe().recv_glib(move |event| {
match event {
ControllerEvent::Add(id, item) => {
debug!("Adding new value with ID {}", id);
@ -250,7 +247,7 @@ impl Module<Button> for ClipboardModule {
button_wrapper.set_above_child(true);
{
let tx = tx.clone();
let tx = context.controller_tx.clone();
button_wrapper.connect_button_press_event(
move |button_wrapper, event| {
// left click
@ -272,7 +269,7 @@ impl Module<Button> for ClipboardModule {
remove_button.style_context().add_class("btn-remove");
{
let tx = tx.clone();
let tx = context.controller_tx.clone();
let entries = entries.clone();
let row = row.clone();

View file

@ -5,7 +5,7 @@ use color_eyre::Result;
use gtk::prelude::*;
use gtk::{Align, Button, Calendar, Label, Orientation};
use serde::Deserialize;
use tokio::sync::{broadcast, mpsc};
use tokio::sync::mpsc;
use tokio::time::sleep;
use crate::channels::{AsyncSenderExt, BroadcastReceiverExt};
@ -145,12 +145,7 @@ impl Module<Button> for ClockModule {
});
let popup = self
.into_popup(
context.controller_tx.clone(),
context.subscribe(),
context,
info,
)
.into_popup(context, info)
.into_popup_parts(vec![&button]);
Ok(ModuleParts::new(button, popup))
@ -158,9 +153,7 @@ impl Module<Button> for ClockModule {
fn into_popup(
self,
_tx: mpsc::Sender<Self::ReceiveMessage>,
rx: broadcast::Receiver<Self::SendMessage>,
_context: WidgetContext<Self::SendMessage, Self::ReceiveMessage>,
context: WidgetContext<Self::SendMessage, Self::ReceiveMessage>,
_info: &ModuleInfo,
) -> Option<gtk::Box> {
let container = gtk::Box::new(Orientation::Vertical, 0);
@ -180,7 +173,7 @@ impl Module<Button> for ClockModule {
let format = self.format_popup;
let locale = Locale::try_from(self.locale.as_str()).unwrap_or(Locale::POSIX);
rx.recv_glib(move |date| {
context.subscribe().recv_glib(move |date| {
let date_string = format!("{}", date.format_localized(&format, locale));
clock.set_label(&date_string);
});

View file

@ -25,7 +25,7 @@ use gtk::{Button, IconTheme, Orientation};
use serde::Deserialize;
use std::cell::RefCell;
use std::rc::Rc;
use tokio::sync::{broadcast, mpsc};
use tokio::sync::mpsc;
use tracing::{debug, error};
#[derive(Debug, Deserialize, Clone)]
@ -258,12 +258,7 @@ impl Module<gtk::Box> for CustomModule {
.map_or(usize::MAX, PopupButton::popup_id);
let popup = self
.into_popup(
context.controller_tx.clone(),
context.subscribe(),
context,
info,
)
.into_popup(context, info)
.into_popup_parts_owned(popup_buttons.take());
Ok(ModuleParts {
@ -274,8 +269,6 @@ impl Module<gtk::Box> for CustomModule {
fn into_popup(
self,
tx: mpsc::Sender<Self::ReceiveMessage>,
_rx: broadcast::Receiver<Self::SendMessage>,
context: WidgetContext<Self::SendMessage, Self::ReceiveMessage>,
info: &ModuleInfo,
) -> Option<gtk::Box>
@ -287,7 +280,7 @@ impl Module<gtk::Box> for CustomModule {
if let Some(popup) = self.popup {
let custom_context = CustomWidgetContext {
info,
tx: &tx,
tx: &context.controller_tx,
bar_orientation: Orientation::Horizontal,
is_popup: true,
icon_theme: info.icon_theme,

View file

@ -21,7 +21,7 @@ use serde::Deserialize;
use std::ops::Deref;
use std::process::{Command, Stdio};
use std::sync::Arc;
use tokio::sync::{broadcast, mpsc};
use tokio::sync::mpsc;
use tracing::{debug, error, trace};
#[derive(Debug, Deserialize, Clone)]
@ -599,10 +599,7 @@ impl Module<gtk::Box> for LauncherModule {
rx.recv_glib(handle_event);
}
let rx = context.subscribe();
let popup = self
.into_popup(context.controller_tx.clone(), rx, context, info)
.into_popup_parts(vec![]); // since item buttons are dynamic, they pass their geometry directly
let popup = self.into_popup(context, info).into_popup_parts(vec![]); // since item buttons are dynamic, they pass their geometry directly
Ok(ModuleParts {
widget: container,
@ -612,9 +609,7 @@ impl Module<gtk::Box> for LauncherModule {
fn into_popup(
self,
controller_tx: mpsc::Sender<Self::ReceiveMessage>,
rx: broadcast::Receiver<Self::SendMessage>,
_context: WidgetContext<Self::SendMessage, Self::ReceiveMessage>,
context: WidgetContext<Self::SendMessage, Self::ReceiveMessage>,
_info: &ModuleInfo,
) -> Option<gtk::Box> {
const MAX_WIDTH: i32 = 250;
@ -630,7 +625,7 @@ impl Module<gtk::Box> for LauncherModule {
{
let container = container.clone();
rx.recv_glib(move |event| {
context.subscribe().recv_glib(move |event| {
match event {
LauncherUpdate::AddItem(item) => {
let app_id = item.app_id.clone();
@ -647,7 +642,7 @@ impl Module<gtk::Box> for LauncherModule {
button.label.truncate(self.truncate_popup);
{
let tx = controller_tx.clone();
let tx = context.controller_tx.clone();
button.connect_clicked(move |_| {
tx.send_spawn(ItemEvent::FocusWindow(win.id));
});
@ -673,7 +668,7 @@ impl Module<gtk::Box> for LauncherModule {
button.label.truncate(self.truncate_popup);
{
let tx = controller_tx.clone();
let tx = context.controller_tx.clone();
button.connect_clicked(move |_button| {
tx.send_spawn(ItemEvent::FocusWindow(win.id));
});

View file

@ -270,8 +270,6 @@ where
fn into_popup(
self,
_tx: mpsc::Sender<Self::ReceiveMessage>,
_rx: broadcast::Receiver<Self::SendMessage>,
_context: WidgetContext<Self::SendMessage, Self::ReceiveMessage>,
_info: &ModuleInfo,
) -> Option<gtk::Box>

View file

@ -9,7 +9,7 @@ use glib::{Propagation, PropertySet};
use gtk::prelude::*;
use gtk::{Button, IconTheme, Label, Orientation, Scale};
use regex::Regex;
use tokio::sync::{broadcast, mpsc};
use tokio::sync::mpsc;
use tracing::error;
pub use self::config::MusicModule;
@ -257,9 +257,8 @@ impl Module<Button> for MusicModule {
});
};
let rx = context.subscribe();
let popup = self
.into_popup(context.controller_tx.clone(), rx, context, info)
.into_popup(context, info)
.into_popup_parts(vec![&button]);
Ok(ModuleParts::new(button, popup))
@ -267,9 +266,7 @@ impl Module<Button> for MusicModule {
fn into_popup(
self,
tx: mpsc::Sender<Self::ReceiveMessage>,
rx: broadcast::Receiver<Self::SendMessage>,
_context: WidgetContext<Self::SendMessage, Self::ReceiveMessage>,
context: WidgetContext<Self::SendMessage, Self::ReceiveMessage>,
info: &ModuleInfo,
) -> Option<gtk::Box> {
let icon_theme = info.icon_theme;
@ -338,27 +335,27 @@ impl Module<Button> for MusicModule {
main_container.add(&volume_box);
container.add(&main_container);
let tx_prev = tx.clone();
let tx_prev = context.controller_tx.clone();
btn_prev.connect_clicked(move |_| {
tx_prev.send_spawn(PlayerCommand::Previous);
});
let tx_play = tx.clone();
let tx_play = context.controller_tx.clone();
btn_play.connect_clicked(move |_| {
tx_play.send_spawn(PlayerCommand::Play);
});
let tx_pause = tx.clone();
let tx_pause = context.controller_tx.clone();
btn_pause.connect_clicked(move |_| {
tx_pause.send_spawn(PlayerCommand::Pause);
});
let tx_next = tx.clone();
let tx_next = context.controller_tx.clone();
btn_next.connect_clicked(move |_| {
tx_next.send_spawn(PlayerCommand::Next);
});
let tx_vol = tx.clone();
let tx_vol = context.controller_tx.clone();
volume_slider.connect_change_value(move |_, _, val| {
tx_vol.send_spawn(PlayerCommand::Volume(val as u8));
Propagation::Proceed
@ -392,6 +389,7 @@ impl Module<Button> for MusicModule {
{
let drag_lock = drag_lock.clone();
let tx = context.controller_tx.clone();
progress.connect_button_release_event(move |scale, _| {
let value = scale.value();
tx.send_spawn(PlayerCommand::Seek(Duration::from_secs_f64(value)));
@ -408,7 +406,7 @@ impl Module<Button> for MusicModule {
let image_size = self.cover_image_size;
let mut prev_cover = None;
rx.recv_glib(move |event| {
context.subscribe().recv_glib(move |event| {
match event {
ControllerEvent::Update(Some(update)) => {
// only update art when album changes

View file

@ -3,7 +3,7 @@ use futures_lite::stream::StreamExt;
use gtk::{Button, prelude::*};
use gtk::{Label, Orientation};
use serde::Deserialize;
use tokio::sync::{broadcast, mpsc};
use tokio::sync::mpsc;
use zbus;
use zbus::fdo::PropertiesProxy;
@ -225,9 +225,8 @@ impl Module<Button> for UpowerModule {
label.set_label_escaped(&format);
});
let rx = context.subscribe();
let popup = self
.into_popup(context.controller_tx.clone(), rx, context, info)
.into_popup(context, info)
.into_popup_parts(vec![&button]);
Ok(ModuleParts::new(button, popup))
@ -235,9 +234,7 @@ impl Module<Button> for UpowerModule {
fn into_popup(
self,
_tx: mpsc::Sender<Self::ReceiveMessage>,
rx: broadcast::Receiver<Self::SendMessage>,
_context: WidgetContext<Self::SendMessage, Self::ReceiveMessage>,
context: WidgetContext<Self::SendMessage, Self::ReceiveMessage>,
_info: &ModuleInfo,
) -> Option<gtk::Box>
where
@ -251,7 +248,7 @@ impl Module<Button> for UpowerModule {
label.add_class("upower-details");
container.add(&label);
rx.recv_glib(move |properties| {
context.subscribe().recv_glib(move |properties| {
let state = properties.state;
let format = match state {
BatteryState::Charging | BatteryState::PendingCharge => {

View file

@ -255,12 +255,7 @@ impl Module<Button> for VolumeModule {
}
let popup = self
.into_popup(
context.controller_tx.clone(),
context.subscribe(),
context,
info,
)
.into_popup(context, info)
.into_popup_parts(vec![&button]);
Ok(ModuleParts::new(button, popup))
@ -268,9 +263,7 @@ impl Module<Button> for VolumeModule {
fn into_popup(
self,
tx: mpsc::Sender<Self::ReceiveMessage>,
rx: tokio::sync::broadcast::Receiver<Self::SendMessage>,
_context: WidgetContext<Self::SendMessage, Self::ReceiveMessage>,
context: WidgetContext<Self::SendMessage, Self::ReceiveMessage>,
_info: &ModuleInfo,
) -> Option<gtk::Box>
where
@ -302,7 +295,7 @@ impl Module<Button> for VolumeModule {
renderer.set_ellipsize(EllipsizeMode::End);
{
let tx = tx.clone();
let tx = context.controller_tx.clone();
sink_selector.connect_changed(move |selector| {
if let Some(name) = selector.active_id() {
tx.send_spawn(Update::SinkChange(name.into()));
@ -325,7 +318,7 @@ impl Module<Button> for VolumeModule {
sink_container.add(&slider);
{
let tx = tx.clone();
let tx = context.controller_tx.clone();
let selector = sink_selector.clone();
slider.connect_button_release_event(move |scale, _| {
@ -344,7 +337,7 @@ impl Module<Button> for VolumeModule {
sink_container.add(&btn_mute);
{
let tx = tx.clone();
let tx = context.controller_tx.clone();
let selector = sink_selector.clone();
btn_mute.connect_toggled(move |btn| {
@ -364,7 +357,7 @@ impl Module<Button> for VolumeModule {
let mut sinks = vec![];
rx.recv_glib(move |event| {
context.subscribe().recv_glib(move |event| {
match event {
Event::AddSink(info) => {
sink_selector.append(Some(&info.name), &info.description);
@ -420,7 +413,7 @@ impl Module<Button> for VolumeModule {
slider.add_class("slider");
{
let tx = tx.clone();
let tx = context.controller_tx.clone();
slider.connect_button_release_event(move |scale, _| {
// GTK will send values outside min/max range
let val = scale.value().clamp(0.0, self.max_volume);
@ -441,7 +434,7 @@ impl Module<Button> for VolumeModule {
});
{
let tx = tx.clone();
let tx = context.controller_tx.clone();
btn_mute.connect_toggled(move |btn| {
let muted = btn.is_active();
tx.send_spawn(Update::InputMute(index, muted));