Skip to main content

class

Function class 

Source
pub fn class(symbol: &CStr) -> *mut c_void
Expand description

Look up an Objective-C class by its OBJC_CLASS_$_Name symbol.

Examples found in repository?
examples/scenes.rs (line 270)
235    unsafe extern "C" fn inspect(_: *mut c_void) {
236        unsafe {
237            let app = objc::shared_app();
238
239            let windows = objc::send(app, objc::sel(c"windows"));
240            let n = count(windows);
241            println!("windows: {n}");
242            for i in 0..n {
243                let w = at(windows, i);
244                let title = text(objc::send(w, objc::sel(c"title")));
245                let visible = objc::send_ret_bool(w, objc::sel(c"isVisible"));
246                let class = objc::send(w, objc::sel(c"class"));
247                let kind = text(objc::send(class, objc::sel(c"description")));
248                println!("  {kind:<24} visible={visible:<5} {title:?}");
249            }
250
251            let menu = objc::send(app, objc::sel(c"mainMenu"));
252            let items = objc::send(menu, objc::sel(c"itemArray"));
253            let n = count(items);
254            println!("menu bar: {n} menus");
255            for i in 0..n {
256                let item = at(items, i);
257                let title = text(objc::send(item, objc::sel(c"title")));
258                let sub = objc::send(item, objc::sel(c"submenu"));
259                let kids = objc::send(sub, objc::sel(c"itemArray"));
260                let entries: Vec<String> = (0..count(kids))
261                    .map(|j| text(objc::send(at(kids, j), objc::sel(c"title"))))
262                    .filter(|t| !t.is_empty())
263                    .collect();
264                println!("  {title:?}: {}", entries.join(" · "));
265            }
266
267            // The menu-bar extra is an `NSStatusItem`, not a window or a menu,
268            // so it is counted separately or it would look like nothing was
269            // built for it.
270            let bar = objc::class(c"OBJC_CLASS_$_NSStatusBar");
271            let system = objc::send(bar, objc::sel(c"systemStatusBar"));
272            println!(
273                "status bar thickness: {}",
274                objc::send_ret_f64(system, objc::sel(c"thickness")),
275            );
276
277            std::process::exit(0);
278        }
279    }