fix: add animate property to NSWindow:setFrame:
I added animate property to `NSWindow:setFrame:`.
If this behavior is intended, I'm sorry but please close this PR.
Fixes#511: Add`NSPanel` trait to create NSPanels
Intention for PR described here: https://github.com/servo/core-foundation-rs/issues/511.
I didn't extend any of the examples to include `NSPanel` because I think that's not really worth it. Instead, here is an adapted version of the `hello_world.rs` example that prints out responses of the API for both, `NSWindow` and `NSPanel`.
```Rust
extern crate cocoa;
use cocoa::appkit::{
NSApp, NSApplication, NSApplicationActivateIgnoringOtherApps,
NSApplicationActivationPolicyRegular, NSBackingStoreBuffered, NSMenu, NSMenuItem, NSPanel,
NSRunningApplication, NSWindow, NSWindowStyleMask,
};
use cocoa::base::{nil, selector, NO};
use cocoa::foundation::{NSAutoreleasePool, NSPoint, NSProcessInfo, NSRect, NSSize, NSString};
fn main() {
unsafe {
let _pool = NSAutoreleasePool::new(nil);
let app = NSApp();
app.setActivationPolicy_(NSApplicationActivationPolicyRegular);
// create Menu Bar
let menubar = NSMenu::new(nil).autorelease();
let app_menu_item = NSMenuItem::new(nil).autorelease();
menubar.addItem_(app_menu_item);
app.setMainMenu_(menubar);
// create Application menu
let app_menu = NSMenu::new(nil).autorelease();
let quit_prefix = NSString::alloc(nil).init_str("Quit ");
let quit_title =
quit_prefix.stringByAppendingString_(NSProcessInfo::processInfo(nil).processName());
let quit_action = selector("terminate:");
let quit_key = NSString::alloc(nil).init_str("q");
let quit_item = NSMenuItem::alloc(nil)
.initWithTitle_action_keyEquivalent_(quit_title, quit_action, quit_key)
.autorelease();
app_menu.addItem_(quit_item);
app_menu_item.setSubmenu_(app_menu);
// create Window
let window = NSWindow::alloc(nil)
.initWithContentRect_styleMask_backing_defer_(
NSRect::new(NSPoint::new(0., 0.), NSSize::new(200., 200.)),
NSWindowStyleMask::NSTitledWindowMask,
NSBackingStoreBuffered,
NO,
)
.autorelease();
window.cascadeTopLeftFromPoint_(NSPoint::new(20., 20.));
window.center();
let title = NSString::alloc(nil).init_str("Hello World!");
window.setTitle_(title);
window.makeKeyAndOrderFront_(nil);
// create Panel
let panel = NSPanel::alloc(nil)
.initWithContentRect_styleMask_backing_defer_(
NSRect::new(NSPoint::new(0., 0.), NSSize::new(200., 200.)),
NSWindowStyleMask::NSTitledWindowMask,
NSBackingStoreBuffered,
NO,
)
.autorelease();
panel.cascadeTopLeftFromPoint_(NSPoint::new(20., 20.));
panel.center();
let title = NSString::alloc(nil).init_str("Hello PANEL!");
panel.setTitle_(title);
panel.makeKeyAndOrderFront_(nil);
// Specific behavior of NSWindow & NSPanel
println!(
"NSWindow can become main window: {}",
window.canBecomeMainWindow()
); // returns true
println!(
"NSPanel can become main window? {}",
panel.canBecomeMainWindow()
); // returns false
// Test methods of NSPanel Trait
println!(
"BEFORE setting it: NSPanel is a floating panel: {}",
panel.floatingPanel()
); // returns false
println!(
"BEFORE setting it: NSPanel becomes key only when needed: {}",
panel.becomesKeyOnlyIfNeeded()
); // returns false
panel.setFloatingPanel(true);
panel.setBecomesKeyOnlyIfNeeded(true);
println!(
"AFTER: NSPanel is a floating panel: {}",
panel.floatingPanel()
); // returns true
println!(
"AFTER: NSPanel becomes key only when needed: {}",
panel.becomesKeyOnlyIfNeeded()
); // returns true
let current_app = NSRunningApplication::currentApplication(nil);
current_app.activateWithOptions_(NSApplicationActivateIgnoringOtherApps);
app.run();
}
}
```
Add basic contfibution guidelines to README
In #453, @pmj proposed bare-bones contribution guidelines, which were received favorably by @jrmuizel. This pull request insert's @pmj's proposed text into the top-level README.
Add get name function to CTFont
## Overview
Now we can get family name, full name, postscript name and some names.
But I want to use other names. (e.g. Copyright notice, License etc...)
So, I made `get_string_by_name_key` methods from helper function.
Add binding for NSWindow::isDocumentEdited()
Getter for the existing setDocumentEdited() binding.
I've tested both via an in-progress change to tauri-apps/tao