mirror of
https://github.com/Zedfrigg/ironbar.git
synced 2025-08-16 14:21:03 +02:00
Merge pull request #996 from JakeStanger/refactor/into-popup
refactor(module): remove redundant `into_popup` parameters
This commit is contained in:
commit
a8decbd152
8 changed files with 41 additions and 77 deletions
|
@ -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();
|
||||
|
||||
|
|
|
@ -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);
|
||||
});
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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));
|
||||
});
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 => {
|
||||
|
|
|
@ -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));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue