Difference between revisions of "Talk:Portal:Mac"
From Free Pascal wiki
Jump to navigationJump to search (→To do: Remove done entry) |
m (→Cross-Platform To Do: Wiki op check) |
||
(45 intermediate revisions by the same user not shown) | |||
Line 26: | Line 26: | ||
* <strike>[[macOS Drawers]] examples done.</strike> | * <strike>[[macOS Drawers]] examples done.</strike> | ||
* <strike>[[Mac Show Application Title, Version, and Company|Cocoa About Boxes]]</strike> | * <strike>[[Mac Show Application Title, Version, and Company|Cocoa About Boxes]]</strike> | ||
+ | * <strike>[[macOS SCNetworkReachability API]] * Detect Internet access or not (laz_network_reachable) </strike> | ||
+ | * <strike> [[Mac_Preferences_Read_and_Write#NSUserDefaults|NSUserDefaults]] - serious problems iOS 9 & macOS 10.12/10.13</strike> | ||
+ | * <strike>[[macOS NSAlert|NSAlert modal dialog or sheet]] attached to a window. See https://developer.apple.com/documentation/appkit/nsalert</strike> | ||
+ | * <strike>[[macOS NSRegularExpression]] article</strike> | ||
+ | * <strike>[[macOS NSString Regular Expressions]] article</strike> | ||
+ | * <strike>Save form state (position and size) using Mac preferences system: [[macOS Form Position Save and Restore]]</strike> | ||
+ | * <strike>AVPlayer - AVKit and AVFoundation [[macOS Video Player]]</strike> | ||
+ | * <strike>[[macOS Progress Indicators]]</strike> | ||
+ | * <strike>[[macOS_NSURLSession#Downloading_files_with_graphical_user_interface_feedback|Updating the GUI from a non-main thread]] (eg NSURLSession progress etc)</strike> | ||
+ | * <strike>[[macOS NSStatusBar|Adding application status items to the menu bar]]</strike> | ||
+ | * <strike>[[lNet_examples#Lazarus_SMTP_client_example_for_macOS|macOS email client using lNet library]]</strike> | ||
+ | * <strike>[[Synapse#Advanced_SMTP_client|macOS email client using Synapse library]]</strike> | ||
===In progress=== | ===In progress=== | ||
* [[macOS daemons and agents]] new macOS daemons and agents page - done but: | * [[macOS daemons and agents]] new macOS daemons and agents page - done but: | ||
− | ** awaiting code examples: | + | ** awaiting code examples: boot script; monitor script; login agent to do(?) |
+ | ** system-wide launch daemons - done (still need launch_activate_socket() for servers) | ||
* [[macOS Energy Efficiency Guide]] - started, in progress | * [[macOS Energy Efficiency Guide]] - started, in progress | ||
+ | * Add full project source code to SourceForge for all my examples... will take a while. | ||
===Stalled=== | ===Stalled=== | ||
* UNUserNotificationCenter notification for Big Sur [stalled] | * UNUserNotificationCenter notification for Big Sur [stalled] | ||
− | |||
===To do=== | ===To do=== | ||
Line 43: | Line 56: | ||
* Alain's AudioQueue example | * Alain's AudioQueue example | ||
* AVSpeechSynthesizer | * AVSpeechSynthesizer | ||
− | * NSFileManager | + | * NSFileManager (mentioned in [[macOS NSURLSession]]) |
* 64 bit Global HotKey (Carbon units needed - see MacPortalToDo.txt) | * 64 bit Global HotKey (Carbon units needed - see MacPortalToDo.txt) | ||
* Screenshot (see MacPortalToDo.txt) | * Screenshot (see MacPortalToDo.txt) | ||
Line 49: | Line 62: | ||
* [https://developer.apple.com/documentation/security/preventing_insecure_network_connections?language=objc Preventing Insecure Network Connections] | * [https://developer.apple.com/documentation/security/preventing_insecure_network_connections?language=objc Preventing Insecure Network Connections] | ||
** [https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html Cocoa Keys] | ** [https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html Cocoa Keys] | ||
− | * | + | * macoS versions and missing features in older versions page (see [[Accessing_macOS_System_Information#Gestalt_Manager|this page section]] for the approach). |
− | ** | + | * Using WKWebView (10.10+) - see [https://forum.lazarus.freepascal.org/index.php/topic,42001 this forum thread] |
− | * | + | * Logging in macOS: https://developer.apple.com/documentation/os/logging |
+ | * String assignment post 2019 (find it and add to Tips) ??? | ||
+ | * Detect "best" web browser - up to 10.15 <tt>LSCopyAllHandlersForURLScheme(CFSTR("https"))</tt> then <tt>LSCopyApplicationURLsForURL</tt> - see LSInfo.pas | ||
+ | * Distribute via app store https://developer.apple.com/forums/thread/128166 | ||
+ | * To reload the plist file manually (avoid cached copy), use defaults read <filename>.plist to read the new plist values or maybe | ||
+ | killall cfprefsd && killall Finder | ||
+ | |||
+ | == Cross-Platform To Do == | ||
+ | |||
+ | * OpenSSL, LibreSSL, etc |
Latest revision as of 00:02, 3 May 2022
Note: A list of macOS items, native code techniques etc to document in the Mac Portal
Trev's Mac Portal ToDo List
Done
The open command (man open) for external applications, documents, urls etcDrag and drop files on form exampleBouncing application dock icons exampleGet macOS default application namemacOS file associations (see macOS_tips.txt)Implement NSSound delegate for macOS NSSoundFinish off System Sound Services, eg completion handler, error msgs for macOS Play Alert SoundHow to hide the dock when starting an application (macOS_tips.txt)AVMidiPlayer (MacPortalToDo.txt)NSBundle paths (apart from Resource)NSProcessInfoFinish the code and description for macOS NSURLConnection.macOS NSURLSession started; system-provided delegates & completion handler example done. Custom delegates done.Example of using macOS Gestures for a trackpadmacOS App NapClarify unloading of dynamic library to macOS Dynamic LibrariesNSApplication Delegates - done for macOS App NapmacOS Application Dock Menu to do ...Protected Resources: https://developer.apple.com/documentation/bundleresources/information_property_list/protected_resourcesmacOS Drawers examples done.Cocoa About BoxesmacOS SCNetworkReachability API * Detect Internet access or not (laz_network_reachable)NSUserDefaults - serious problems iOS 9 & macOS 10.12/10.13NSAlert modal dialog or sheet attached to a window. See https://developer.apple.com/documentation/appkit/nsalertmacOS NSRegularExpression articlemacOS NSString Regular Expressions articleSave form state (position and size) using Mac preferences system: macOS Form Position Save and RestoreAVPlayer - AVKit and AVFoundation macOS Video PlayermacOS Progress IndicatorsUpdating the GUI from a non-main thread (eg NSURLSession progress etc)Adding application status items to the menu barmacOS email client using lNet librarymacOS email client using Synapse library
In progress
- macOS daemons and agents new macOS daemons and agents page - done but:
- awaiting code examples: boot script; monitor script; login agent to do(?)
- system-wide launch daemons - done (still need launch_activate_socket() for servers)
- macOS Energy Efficiency Guide - started, in progress
- Add full project source code to SourceForge for all my examples... will take a while.
Stalled
- UNUserNotificationCenter notification for Big Sur [stalled]
To do
- Retrieving file attributes
- Alain's AudioQueue example
- AVSpeechSynthesizer
- NSFileManager (mentioned in macOS NSURLSession)
- 64 bit Global HotKey (Carbon units needed - see MacPortalToDo.txt)
- Screenshot (see MacPortalToDo.txt)
- File System Events + packages/univint/src/FSEvents.pas
- Preventing Insecure Network Connections
- macoS versions and missing features in older versions page (see this page section for the approach).
- Using WKWebView (10.10+) - see this forum thread
- Logging in macOS: https://developer.apple.com/documentation/os/logging
- String assignment post 2019 (find it and add to Tips) ???
- Detect "best" web browser - up to 10.15 LSCopyAllHandlersForURLScheme(CFSTR("https")) then LSCopyApplicationURLsForURL - see LSInfo.pas
- Distribute via app store https://developer.apple.com/forums/thread/128166
- To reload the plist file manually (avoid cached copy), use defaults read <filename>.plist to read the new plist values or maybe
killall cfprefsd && killall Finder
Cross-Platform To Do
- OpenSSL, LibreSSL, etc