Browse Source

utils: Add boolean operator Expressions

merge-requests/1327/merge
Kai A. Hiller 5 years ago
parent
commit
fe35bf0bc6
  1. 41
      src/utils.rs

41
src/utils.rs

@ -61,3 +61,44 @@ pub fn prop_expr<T: IsA<Object>>(object: &T, prop: &str) -> gtk::Expression {
let obj_expr = gtk::ConstantExpression::new(object).upcast();
gtk::PropertyExpression::new(T::static_type(), Some(&obj_expr), prop).upcast()
}
// Returns an expression that is the and’ed result of the given boolean expressions.
#[allow(dead_code)]
pub fn and_expr(a_expr: gtk::Expression, b_expr: gtk::Expression) -> gtk::Expression {
gtk::ClosureExpression::new(
move |args| {
let a: bool = args[1].get().unwrap();
let b: bool = args[2].get().unwrap();
a && b
},
&[a_expr, b_expr],
)
.upcast()
}
// Returns an expression that is the or’ed result of the given boolean expressions.
#[allow(dead_code)]
pub fn or_expr(a_expr: gtk::Expression, b_expr: gtk::Expression) -> gtk::Expression {
gtk::ClosureExpression::new(
move |args| {
let a: bool = args[1].get().unwrap();
let b: bool = args[2].get().unwrap();
a || b
},
&[a_expr, b_expr],
)
.upcast()
}
// Returns an expression that is the inverted result of the given boolean expressions.
#[allow(dead_code)]
pub fn not_expr(a_expr: gtk::Expression) -> gtk::Expression {
gtk::ClosureExpression::new(
move |args| {
let a: bool = args[1].get().unwrap();
!a
},
&[a_expr],
)
.upcast()
}

Loading…
Cancel
Save