Build Better Mac Apps

macOS 10.10 ~ 11.0 • 4GB RAM
Version 1.1 - September 29th 2020
Ohanaware Developer Kit for $200
Also included
1-Year App Wrapper Upgrade Plan worth $50.
Just the App Kit for $175

What is it, why is it special?

The Ohanaware App Kit 2020 is a collection of declares and convenience classes that we (Ohanaware) have created over the last decade or so. Which we've then wrapped up into this kit to help other Xojo developers create better Mac Apps, through access to functions and technology that is possible out of the box.

1

We are mac devs

We use this code in our award winning apps like App Wrapper and HDRtist.
2

mo powa babeh

Declares in this kit are the fastest way we know to access Apple's API from Xojo.
3

efficiency

Unused declares are stripped, smaller apps, faster launches & less memory.
4

integrity

Embed this kit in a project and it doesn't change until you want it to.
5

Convenience

Includes classes & functions, making it quicker & easier to use Apple's API.
6

Source code

Explore, learn, customize, hack, optimize, improve, personalize this kit.

a few Highlights

Now includes GUI Cheat Sheet

Standard "Recent Items" & "Window" menus.

Xojo Listbox with overlay scrollers and "elastic" scrolling.

Read & write Image meta data from multiple formats.

Execute Apple Script and handle privacy changes.

Error Reporting system, helps make more stable apps.

macOS Big Sur

Coverage and preparation

What's new in 1.0.6

What's covered?

Below is not a complete list, just what we've written documentation for at the time of releasing version 1.0. Complete documentation is included with the package. This should give a fair idea of the depth that is covered by the Ohanaware App Kit.

Animation

  • NSControlAnimator
  • CoreAnimation
  • Canvas animation
  • ScrollView Animation
  • Window animation
  • NSShowAnimationEffect

Application object

  • Application Icon
  • Display Version
  • Display Name
  • Recent Items Menu
  • Dock Badges
  • Sudden termination
  • Automatic Windows menu
  • Apple About Box
  • Multiple files dropped onto App icon
  • Application is hidden or unhidden
  • Launch arguments
  • Reading properties from app's plist
  • Bounce icon in dock
  • Handling URL schemas

Apps that are running

  • List of running applications
  • Current Application
  • Getting information
  • Interacting with

App Nap

  • Controlling App Nap

App Report

  • What is App Report?
  • Integrating into an app

App Sandbox

  • Determining if the application is Sandboxed
  • Window Restoration
  • Recent Items Menu
  • Security-Scoped Bodgemarks
  • Launching included Applications
  • Interface to choose photos/videos
  • Using shared memory
  • Apple Script in a Sandboxed application

Apple Script

  • Apple Script in a Sandboxed application
  • Apple Script in NON-Sandboxed app
  • Execute shell commands with authorization

Controls

  • CoreAnimation
  • Precision scrolling
  • Scrolling inertia to provide a bounce back
  • Capturing contents as an image
  • Capturing contents as PDF
  • Setting a shadow on a control
  • Button
    • Setting icons
  • Canvas
    • Configuring Delegate
    • Rotation gesture
    • Magnify gesture
    • Smart Magnify gesture
    • A Swipe style gesture
    • Adding animation
    • Custom Focus Ring
  • Color Well
    • Adding a Color Well
    • Events
    • Methods
    • Properties
  • Image Well
    • Removing the border
    • Auto resizing images
    • Setting a system image
  • Listbox
    • Transparent background
    • Drawing system images.
    • Alternating row colors
    • Invalidate row
    • ScrollView
  • NSControlAnimator
    • Animating movement of controls
    • Methods
    • Shared Properties
    • Timing Functions
  • Popup Menus
    • Action menu
    • Setting icons
    • Setting the style
    • Setting tool tips on items
  • Scrollbars
    • Overlay "Style" Scrollbar
    • Events
    • Methods
    • Properties
    • Style options
  • ScrollView
    • Adding a scrollView
    • Using with a Canvas
    • Using with a Listbox
    • Selection Rect
    • Methods
    • Properties
  • Sliders
    • Slider Style
  • Search field
    • Adding a Search Field
    • Events
    • Properties
    • searchActionOptions
  • Segmented Controls
    • Setting icons
    • Image scaling
    • Selected Item Index
  • Text Areas
    • Style controls
    • Auto link handling
    • Auto dash handling
    • Auto Quote handling
    • Auto text replacement
    • Loading RTFD data
    • Saving RTFD data
    • Handling images
  • Visual Effect Views
    • Adding to a window
    • Adding to a canvas
    • Function description
    • Additional Functions
    • Materials
    • Blending Modes
  • Window Splitter
    • Adding to a Window
    • Events
    • Properties
    • Enums

Email

  • Create a text based e-mail
  • Create a "Feedback" e-mail
  • Create an e-mail with a file attachment

Errors

  • Handling NSErrors
  • Reporting exceptions
  • Debugging a NSException
  • Finding crash reports

Files

  • File Icons
  • File icons from name
  • Finding an App by bundle identifier
  • Opening a file in a specific app
  • Creating a Symbolic Link
  • Creating a Hard Link
  • Creating a Bookmark file (Alias)
  • Sending to Trash/Bin
  • Revealing in the Finder
  • Getting display type from a file
  • Atomic file saving
  • Spotlight data
  • UTI information
  • Xattrs
  • Finder Tags

Fonts

  • System Font Name
  • System Font Sizes
  • Font Weights
  • Replicating older OSes
  • WYSIWYG font menu

Graphics

  • Clipping to a vector path
  • Theme colors
  • Possible colors
  • Tiling a texture
  • Dropshadows
  • Transparency Layers
  • Drawing system supplied icons
  • Gradients
  • Erasing content

Images

  • Different image objects
  • Drawing CGImages & NSImages
  • Converting between image objects
  • System supplied images
  • Image names
  • Loading images with CoreGraphics
  • Reading image meta data
  • Writing images & meta data.
  • Quickly getting the thumbnail from an image
  • Getting actual bytes of an image
  • ICNS, ICO or Tiff for multi-image retina assets
  • Creating a multi-image file
  • Creating a HEIC image file

Menus

  • Setting icons
  • Alternative items
  • Recent Items Menu
  • Close All menu
  • Automatic Windows menu
  • Full Screen MenuItem
  • About this application

Notifications

  • Handling OS issued Notifications.
  • Notifications between Xojo Objects
  • User visible Notifications

Preferences system.

  • Supported Data Types
  • Saving Preferences
  • Reading Preferences
  • Saving & Restoring Window locations
  • Removing a Preference
  • Removing all preferences for an app

Property Lists

  • Reading plist files
  • Writing plist files
  • Reading plist data
  • Creating plist data

Save Dialog

  • Adding a NSSavePanel to your app
  • Adding custom options

Shared Memory

  • Setting up with the parent/controller app
  • Accessing from the helper application

Sharing Services

  • Building a list of services
  • Sharing the users data
  • Handling the sharing delegate
  • Did the share fail or succeed?
  • Attaching to the window

System Information

  • OS Version
  • Testing OS Version
  • Testing OS functionality
  • Installed memory
  • Uptime
  • Computer is to enter or exit sleep
  • Disks are connected or removed
  • Responding to the system theme change.
  • How many active cores are available
  • Thermal state of the machine
  • Computer name

Toolbars

  • Controls on the Toolbar
  • Customizing the appearance
  • Using system icons

User

  • Username
  • User's name
  • User's Language
  • Media Browser

Windows

  • Built-in animation
  • Customizing the appearance
  • Auto Tabbed Windows
  • Obscured from the users view
  • Moved screen
  • Clamping window size to the screen
  • Entering Full Screen
  • Customizing the full screen experience
  • Exiting Full Screen
  • Started to move
  • About to Resize
  • Adjusting the location of sheet windows
  • App Store style window example
  • Adding a Visual Effect View to a window
  • Automatically restoring when app re-opens
  • Making a Pallet window that auto-reopens and recalls it's position

Zip Files

  • Creating Zip files
  • Extracting Zip Files
  • Exploring a Zip file
  • Reading a file inside a zip