virtual-output: add support for virtual outputs
This commit is contained in:
parent
c25d17514d
commit
530e66ef78
27 changed files with 1480 additions and 9 deletions
|
|
@ -18,6 +18,7 @@ enum PaneName {
|
|||
LookAndFeel,
|
||||
Clients,
|
||||
WindowSearch,
|
||||
VirtualOutputs,
|
||||
}
|
||||
|
||||
impl PaneName {
|
||||
|
|
@ -33,6 +34,7 @@ impl PaneName {
|
|||
PaneName::LookAndFeel => "Look and Feel",
|
||||
PaneName::Clients => "Clients",
|
||||
PaneName::WindowSearch => "Window Search",
|
||||
PaneName::VirtualOutputs => "Virtual Outputs",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -79,6 +81,9 @@ impl ControlCenterInner {
|
|||
PaneName::WindowSearch => {
|
||||
PaneType::WindowSearch(self.create_window_search_pane())
|
||||
}
|
||||
PaneName::VirtualOutputs => {
|
||||
PaneType::VirtualOutputs(self.create_virtual_outputs_pane())
|
||||
}
|
||||
};
|
||||
self.open(tree, ty);
|
||||
ui.ctx().request_repaint();
|
||||
|
|
|
|||
49
src/control_center/cc_virtual_outputs.rs
Normal file
49
src/control_center/cc_virtual_outputs.rs
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
use {
|
||||
crate::{
|
||||
control_center::ControlCenterInner, egui_adapter::egui_platform::icons::ICON_CLOSE,
|
||||
state::State,
|
||||
},
|
||||
egui::Ui,
|
||||
std::rc::Rc,
|
||||
};
|
||||
|
||||
pub struct VirtualOutputsPane {
|
||||
state: Rc<State>,
|
||||
new: String,
|
||||
}
|
||||
|
||||
impl ControlCenterInner {
|
||||
pub fn create_virtual_outputs_pane(self: &Rc<Self>) -> VirtualOutputsPane {
|
||||
VirtualOutputsPane {
|
||||
state: self.state.clone(),
|
||||
new: Default::default(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl VirtualOutputsPane {
|
||||
pub fn title(&self, res: &mut String) {
|
||||
res.push_str("Virtual Outputs");
|
||||
}
|
||||
|
||||
pub fn show(&mut self, ui: &mut Ui) {
|
||||
let s = &self.state;
|
||||
let mut outputs: Vec<_> = s.virtual_outputs.outputs.lock().keys().cloned().collect();
|
||||
outputs.sort();
|
||||
for o in &outputs {
|
||||
ui.horizontal(|ui| {
|
||||
if ui.button(ICON_CLOSE).clicked() {
|
||||
s.virtual_outputs.remove_output(s, o);
|
||||
}
|
||||
ui.label(o);
|
||||
});
|
||||
}
|
||||
ui.horizontal(|ui| {
|
||||
ui.text_edit_singleline(&mut self.new);
|
||||
if ui.button("Add").clicked() {
|
||||
s.virtual_outputs.get_or_create(s, &self.new);
|
||||
ui.ctx().request_repaint();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue