pnmixer-rust/src/gui.rs

56 lines
1.6 KiB
Rust
Raw Normal View History

2017-06-26 15:56:09 +00:00
extern crate gtk;
2017-06-26 21:52:21 +00:00
extern crate gtk_sys;
2017-06-26 15:56:09 +00:00
extern crate gdk;
2017-06-26 21:52:21 +00:00
extern crate gdk_sys;
extern crate glib;
extern crate ffi;
extern crate libc;
2017-06-26 15:56:09 +00:00
2017-06-27 13:56:33 +00:00
use errors::*;
2017-06-26 15:56:09 +00:00
use gtk::prelude::*;
2017-06-26 21:52:21 +00:00
use gdk::DeviceExt;
use gdk::{GrabOwnership, GrabStatus, BUTTON_PRESS_MASK, KEY_PRESS_MASK};
use gdk_sys::GDK_CURRENT_TIME;
2017-06-26 15:56:09 +00:00
2017-06-26 21:52:21 +00:00
pub fn set_slider(vol_scale_adj: &gtk::Adjustment, scale: f64) {
2017-06-26 15:56:09 +00:00
vol_scale_adj.set_value(scale);
}
2017-06-27 13:56:33 +00:00
pub fn grab_devices(window: &gtk::Window) -> Result<()> {
let device = gtk::get_current_event_device().ok_or("No current device")?;
2017-06-26 21:52:21 +00:00
2017-06-27 13:56:33 +00:00
let gdk_window = window.get_window().ok_or("No window?!")?;
2017-06-26 21:52:21 +00:00
/* Grab the mouse */
2017-06-27 22:23:12 +00:00
let m_grab_status =
device.grab(&gdk_window,
GrabOwnership::None,
true,
BUTTON_PRESS_MASK,
None,
GDK_CURRENT_TIME as u32);
2017-06-26 21:52:21 +00:00
if m_grab_status != GrabStatus::Success {
2017-06-27 22:23:12 +00:00
warn!("Could not grab {}",
device.get_name().unwrap_or(String::from("UNKNOWN DEVICE")));
2017-06-26 21:52:21 +00:00
}
/* Grab the keyboard */
2017-06-27 22:23:12 +00:00
let k_dev = device.get_associated_device()
.ok_or("Couldn't get associated device")?;
let k_grab_status = k_dev.grab(&gdk_window,
GrabOwnership::None,
true,
KEY_PRESS_MASK,
None,
GDK_CURRENT_TIME as u32);
2017-06-26 21:52:21 +00:00
if k_grab_status != GrabStatus::Success {
2017-06-27 22:23:12 +00:00
warn!("Could not grab {}",
k_dev.get_name().unwrap_or(String::from("UNKNOWN DEVICE")));
2017-06-26 21:52:21 +00:00
}
2017-06-27 13:56:33 +00:00
return Ok(());
2017-06-26 21:52:21 +00:00
}