cosmic-applets/applets/cosmic-applet-workspaces/src/window/mod.rs

51 lines
1.6 KiB
Rust
Raw Normal View History

2022-06-08 10:47:16 -04:00
// SPDX-License-Identifier: MPL-2.0-only
2022-06-20 15:48:27 -04:00
use crate::{fl, utils::Activate, wayland::State, workspace_list::WorkspaceList};
2022-06-08 10:47:16 -04:00
use cascade::cascade;
2022-07-06 12:07:26 -04:00
use cosmic_panel_config::CosmicPanelConfig;
2022-06-08 10:47:16 -04:00
use gtk4::{
gio,
glib::{self, Object},
prelude::*,
subclass::prelude::*,
};
mod imp;
glib::wrapper! {
pub struct CosmicWorkspacesWindow(ObjectSubclass<imp::CosmicWorkspacesWindow>)
@extends gtk4::ApplicationWindow, gtk4::Window, gtk4::Widget,
@implements gio::ActionGroup, gio::ActionMap, gtk4::Accessible, gtk4::Buildable,
gtk4::ConstraintTarget, gtk4::Native, gtk4::Root, gtk4::ShortcutManager;
}
impl CosmicWorkspacesWindow {
pub fn new(app: &gtk4::Application) -> Self {
2022-06-08 10:47:16 -04:00
let self_: Self = Object::new(&[("application", app)])
.expect("Failed to create `CosmicWorkspacesWindow`.");
let imp = imp::CosmicWorkspacesWindow::from_instance(&self_);
cascade! {
&self_;
..set_width_request(1);
..set_height_request(1);
..set_decorated(false);
..set_resizable(false);
2022-06-15 16:51:08 -04:00
..set_title(Some(&fl!("cosmic-applet-workspaces")));
2022-06-08 10:47:16 -04:00
..add_css_class("transparent");
};
2022-06-20 13:15:12 -04:00
let config = CosmicPanelConfig::load_from_env().unwrap_or_default();
2022-06-08 10:47:16 -04:00
let app_list = WorkspaceList::new(config);
2022-06-08 10:47:16 -04:00
self_.set_child(Some(&app_list));
imp.inner.set(app_list).unwrap();
self_
}
pub fn set_workspaces(&self, workspaces: State) {
let imp = imp::CosmicWorkspacesWindow::from_instance(&self);
imp.inner.get().unwrap().set_workspaces(workspaces);
}
2022-06-08 10:47:16 -04:00
}