pnmixer-rust/src/gui.rs

59 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
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-26 21:52:21 +00:00
pub fn grab_devices(window: &gtk::Window) {
let m_device = gtk::get_current_event_device();
if m_device.is_none() {
warn!("Couldn't get current device");
return;
}
let device = m_device.unwrap();
let gdk_window = window.get_window().unwrap();
/* Grab the mouse */
let m_grab_status =
device.grab(&gdk_window,
GrabOwnership::None,
true,
BUTTON_PRESS_MASK,
None,
GDK_CURRENT_TIME as u32);
if m_grab_status != GrabStatus::Success {
warn!("Could not grab {}", device.get_name().unwrap());
}
/* Grab the keyboard */
let m_k_dev = device.get_associated_device();
if m_k_dev.is_none() {
warn!("Couldn't get associated device");
return;
}
let k_dev = m_k_dev.unwrap();
let k_grab_status = k_dev.grab(&gdk_window,
GrabOwnership::None,
true,
KEY_PRESS_MASK,
None,
GDK_CURRENT_TIME as u32);
if k_grab_status != GrabStatus::Success {
warn!("Could not grab {}", k_dev.get_name().unwrap())
}
}