Featured Products
Omegabundle for Xojo 2020 Products

The Ohanaware App Kit is a huge collection of declares and objects that we've created over the years to help us with crafting better macOS applications from the Xojo development tool.

This library consists of multiple parts.

  • Declares

    These are lightweight modules that contain the raw declares to Apple's APIs. Because of their design, unneeded functions are stripped at compile time (keeping application sizes minimal) and are the most performant means of accessing Apple's huge toolbox. Some of these "Declare" modules can be removed entirely when crafting or updating applications, but most share components with each other.
  • Convenience Code

    The OAK2020 module contains a lot of convenience code which makes it easier to work with some of the declares, as well as functions that are used throughout Ohanaware's applications.
  • Convenience Objects

    Are wrappers for the declares (they rely on the presence of the declare modules) or wrappers for Xojo code, they make it easier to interact with certain system functions, with a slight performance cost.

 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 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
    •    Using 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
    •    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
    ◦    NSVisualEffectMaterialValue
    ◦    NSVisualEffectViewBlendingModeValue

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
    •    Read this first
    •    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
    •    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