fractal/utils/
expression.rs1use gtk::{glib, glib::closure};
4use secular::normalized_lower_lay_string;
5
6pub(crate) fn and(
9 a_expr: impl AsRef<gtk::Expression>,
10 b_expr: impl AsRef<gtk::Expression>,
11) -> gtk::ClosureExpression {
12 gtk::ClosureExpression::new::<bool>(
13 &[a_expr.as_ref(), b_expr.as_ref()],
14 closure!(|_: Option<glib::Object>, a: bool, b: bool| { a && b }),
15 )
16}
17
18pub(crate) fn or(
21 a_expr: impl AsRef<gtk::Expression>,
22 b_expr: impl AsRef<gtk::Expression>,
23) -> gtk::ClosureExpression {
24 gtk::ClosureExpression::new::<bool>(
25 &[a_expr.as_ref(), b_expr.as_ref()],
26 closure!(|_: Option<glib::Object>, a: bool, b: bool| { a || b }),
27 )
28}
29
30pub(crate) fn not<E: AsRef<gtk::Expression>>(a_expr: E) -> gtk::ClosureExpression {
33 gtk::ClosureExpression::new::<bool>(
34 &[a_expr],
35 closure!(|_: Option<glib::Object>, a: bool| { !a }),
36 )
37}
38
39pub(crate) fn normalize_string<E: AsRef<gtk::Expression>>(expr: E) -> gtk::ClosureExpression {
42 gtk::ClosureExpression::new::<String>(
43 &[expr],
44 closure!(|_: Option<glib::Object>, s: &str| { normalized_lower_lay_string(s) }),
45 )
46}