Remove duplicates
This commit is contained in:
parent
0ada3bfa28
commit
ad11a23c9e
4 changed files with 36 additions and 6 deletions
|
@ -141,7 +141,7 @@ impl Device {
|
|||
.iter()
|
||||
.map(|kind| {
|
||||
(
|
||||
format!("{:?}", kind),
|
||||
code_to_string(kind),
|
||||
match self.device.abs_info(kind) {
|
||||
Some(abs_info) => Descriptor::Slider {
|
||||
min: abs_info.minimum,
|
||||
|
@ -165,7 +165,7 @@ impl Device {
|
|||
.iter()
|
||||
.map(|kind| {
|
||||
(
|
||||
format!("{:?}", kind),
|
||||
code_to_string(kind),
|
||||
match self.device.abs_info(kind) {
|
||||
Some(abs_info) => Descriptor::Slider {
|
||||
min: abs_info.minimum,
|
||||
|
@ -182,7 +182,7 @@ impl Device {
|
|||
.iter()
|
||||
.map(|kind| {
|
||||
(
|
||||
format!("{:?}", kind),
|
||||
code_to_string(kind),
|
||||
match self.device.abs_info(kind) {
|
||||
Some(abs_info) => Descriptor::Slider {
|
||||
min: abs_info.minimum,
|
||||
|
@ -197,7 +197,7 @@ impl Device {
|
|||
EventType::EV_KEY => Some(
|
||||
kinds
|
||||
.iter()
|
||||
.map(|kind| (format!("{:?}", kind), Descriptor::Button))
|
||||
.map(|kind| (code_to_string(kind), Descriptor::Button))
|
||||
.collect(),
|
||||
),
|
||||
|
||||
|
|
|
@ -666,3 +666,16 @@ pub fn ev_reps() -> &'static [EventCode] {
|
|||
|
||||
&EVENT_CODES
|
||||
}
|
||||
|
||||
pub fn code_to_string(code: &EventCode) -> String {
|
||||
match code {
|
||||
EventCode::EV_KEY(key) => format!("{:?}", key),
|
||||
EventCode::EV_REL(rel) => format!("{:?}", rel),
|
||||
EventCode::EV_ABS(abs) => format!("{:?}", abs),
|
||||
EventCode::EV_REP(rep) => format!("{:?}", rep),
|
||||
EventCode::EV_FF(ff) => format!("{:?}", ff),
|
||||
EventCode::EV_FF_STATUS(ffs) => format!("{:?}", ffs),
|
||||
|
||||
_ => panic!(),
|
||||
}
|
||||
}
|
||||
|
|
|
@ -55,7 +55,24 @@ pub fn draw_graph_editor(
|
|||
node_finder_area = node_finder_area.current_pos(pos);
|
||||
}
|
||||
node_finder_area.show(ctx, |ui| {
|
||||
if let Some(node_device) = node_finder.show(devices, virtual_device.is_none(), ui) {
|
||||
// don't allow a nodes to be duplicated
|
||||
let devs: Vec<&Device> = devices
|
||||
.iter()
|
||||
.filter(|device| {
|
||||
let mut allow = true;
|
||||
|
||||
for (_node_id, node) in state.graph.nodes.iter() {
|
||||
if node.op_name == device.name() {
|
||||
allow = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
allow
|
||||
})
|
||||
.collect();
|
||||
|
||||
if let Some(node_device) = node_finder.show(&devs, virtual_device.is_none(), ui) {
|
||||
let new_node = state.graph.add_node(node_device.to_descriptor());
|
||||
state
|
||||
.node_positions
|
||||
|
|
|
@ -41,7 +41,7 @@ impl NodeFinder {
|
|||
/// the next frame.
|
||||
pub fn show<'a>(
|
||||
&mut self,
|
||||
devices: &'a [Device],
|
||||
devices: &'a [&Device],
|
||||
allow_virt_dev: bool,
|
||||
ui: &mut Ui,
|
||||
) -> Option<SelectedDevice<'a>> {
|
||||
|
|
Loading…
Reference in a new issue