فهرست منبع

Reorganize widgets

Thomas Dy 7 سال پیش
والد
کامیت
9e258bdd92
9فایلهای تغییر یافته به همراه88 افزوده شده و 89 حذف شده
  1. 76 1
      src/main.rs
  2. 6 88
      src/ui/mod.rs
  3. 0 0
      src/widgets/bspwm.rs
  4. 6 0
      src/widgets/mod.rs
  5. 0 0
      src/widgets/music.rs
  6. 0 0
      src/widgets/sensors.rs
  7. 0 0
      src/widgets/spacer.rs
  8. 0 0
      src/widgets/title.rs
  9. 0 0
      src/widgets/tray.rs

+ 76 - 1
src/main.rs

@@ -8,12 +8,87 @@ extern crate fontconfig_sys;
 mod sensors;
 mod config;
 mod ui;
+mod widgets;
+
+use simple_signal::Signal;
 
 use std::env;
 use std::process;
+use std::sync::mpsc;
+use std::thread;
+use std::time;
+
+use ui::x11;
+use ui::widget;
 
 fn main() {
     let config_path = env::args().nth(1).unwrap_or("./panel.toml".to_string());
     let cfg = config::load(&config_path);
-    process::exit(ui::ui_main(&cfg));
+
+    if let Some(conn) = x11::Connection::new() {
+        let (tx, rx) = mpsc::channel();
+        {
+            let tx = tx.clone();
+            simple_signal::set_handler(&[Signal::Int, Signal::Term], move |_signals| {
+                tx.send(widget::Message::Quit).expect("Failed to send quit");
+            });
+        }
+        {
+            let tx = tx.clone();
+            let conn = conn.clone_connection();
+            thread::spawn(move || {
+                loop {
+                    match conn.wait_for_event() {
+                        Some(event) => {
+                            let message = widget::Message::XcbEvent(event);
+                            tx.send(message).expect("Failed to send xcb event");
+                        },
+                        None => { break; }
+                    }
+                }
+            });
+        }
+
+        let mut panel = ui::panel::Panel::new(conn, &cfg);
+
+        let bspwm = widgets::bspwm::Bspwm::new(tx.clone(), panel.make_draw_context());
+        panel.add_left_widget(Box::new(bspwm));
+
+        let spacer = widgets::spacer::create(panel.make_draw_context(), 4, 0x6666, 0x6666, 0x6666, 0xFFFF);
+        panel.add_left_widget(Box::new(spacer));
+
+        let title = widgets::title::Title::new(panel.conn.clone(), panel.make_draw_context());
+        panel.add_left_widget(Box::new(title));
+
+        let tray = widgets::tray::Tray::new(tx.clone(), panel.conn.clone(), panel.window);
+        panel.add_right_widget(Box::new(tray));
+
+        let sensors = widgets::sensors::Sensors::new(panel.make_draw_context(), &cfg);
+        panel.add_right_widget(Box::new(sensors));
+
+        let music = widgets::music::mpd(tx.clone(), panel.make_draw_context());
+        panel.add_right_widget(Box::new(music));
+
+        panel.create();
+
+        {
+            let tx = tx.clone();
+            thread::spawn(move || {
+                loop {
+                    tx.send(widget::Message::Update).expect("Failed to send update");
+                    thread::sleep(time::Duration::from_secs(1));
+                }
+            });
+        }
+
+        loop {
+            let event = rx.recv();
+            if panel.handle_event(event.unwrap()) {
+                println!("Exiting");
+                break;
+            }
+        }
+    }
+
+    process::exit(0);
 }

+ 6 - 88
src/ui/mod.rs

@@ -1,90 +1,8 @@
-mod font;
-mod panel;
-mod ext;
-mod title;
-mod tray;
-mod sensors;
-mod bspwm;
-mod spacer;
-mod music;
-mod util;
-mod widget;
-mod x11;
-
-use simple_signal;
-use simple_signal::Signal;
-use config::Config;
-
-use std::sync::mpsc;
-use std::thread;
-use std::time;
+pub mod font;
+pub mod panel;
+pub mod ext;
+pub mod util;
+pub mod widget;
+pub mod x11;
 
 pub const SIZE: u16 = 20;
-
-pub fn ui_main(cfg: &Config) -> i32 {
-    if let Some(conn) = x11::Connection::new() {
-        let (tx, rx) = mpsc::channel();
-        {
-            let tx = tx.clone();
-            simple_signal::set_handler(&[Signal::Int, Signal::Term], move |_signals| {
-                tx.send(widget::Message::Quit).expect("Failed to send quit");
-            });
-        }
-        {
-            let tx = tx.clone();
-            let conn = conn.clone_connection();
-            thread::spawn(move || {
-                loop {
-                    match conn.wait_for_event() {
-                        Some(event) => {
-                            let message = widget::Message::XcbEvent(event);
-                            tx.send(message).expect("Failed to send xcb event");
-                        },
-                        None => { break; }
-                    }
-                }
-            });
-        }
-
-        let mut panel = panel::Panel::new(conn, cfg);
-
-        let bspwm = bspwm::Bspwm::new(tx.clone(), panel.make_draw_context());
-        panel.add_left_widget(Box::new(bspwm));
-
-        let spacer = spacer::create(panel.make_draw_context(), 4, 0x6666, 0x6666, 0x6666, 0xFFFF);
-        panel.add_left_widget(Box::new(spacer));
-
-        let title = title::Title::new(panel.conn.clone(), panel.make_draw_context());
-        panel.add_left_widget(Box::new(title));
-
-        let tray = tray::Tray::new(tx.clone(), panel.conn.clone(), panel.window);
-        panel.add_right_widget(Box::new(tray));
-
-        let sensors = sensors::Sensors::new(panel.make_draw_context(), cfg);
-        panel.add_right_widget(Box::new(sensors));
-
-        let music = music::mpd(tx.clone(), panel.make_draw_context());
-        panel.add_right_widget(Box::new(music));
-
-        panel.create();
-
-        {
-            let tx = tx.clone();
-            thread::spawn(move || {
-                loop {
-                    tx.send(widget::Message::Update).expect("Failed to send update");
-                    thread::sleep(time::Duration::from_secs(1));
-                }
-            });
-        }
-
-        loop {
-            let event = rx.recv();
-            if panel.handle_event(event.unwrap()) {
-                println!("Exiting");
-                break;
-            }
-        }
-    }
-    0
-}

+ 0 - 0
src/ui/bspwm.rs → src/widgets/bspwm.rs


+ 6 - 0
src/widgets/mod.rs

@@ -0,0 +1,6 @@
+pub mod title;
+pub mod tray;
+pub mod sensors;
+pub mod bspwm;
+pub mod spacer;
+pub mod music;

+ 0 - 0
src/ui/music.rs → src/widgets/music.rs


+ 0 - 0
src/ui/sensors.rs → src/widgets/sensors.rs


+ 0 - 0
src/ui/spacer.rs → src/widgets/spacer.rs


+ 0 - 0
src/ui/title.rs → src/widgets/title.rs


+ 0 - 0
src/ui/tray.rs → src/widgets/tray.rs