Giter Club home page Giter Club logo

outputbins2pde's Introduction

OutputBins2PDE demonstrates how to write a Cocoa PDE that supports all of the features of Mac OS X 10.5, while also running on Mac OS X 10.4. It demonstrates how to write a complex Cocoa Printer PDE, demonstrating the following features that are new in Mac OS X 10.5:

1. Resizing the printer dialog
2. Overriding the Help and OK buttons
3. Automatic PPD Constraint handling

When running on Mac OS X 10.4 the PDE automatically falls back to a reduced feature set.

To be fully compatible with applications that take advantage of all features of Mac OS X 10.5, you must build your PDE 4 way universal, that is for the ppc, ppc64, i386 and x86_64 architectures. Additionally Printer PDEs need to support running in a Garbage Collected environment. We highly recommend that you test your PDEs thoroughly on Mac OS X 10.4 to ensure that this does not cause your PDE to malfunction, as the any GC setting other than "unsupported" will change the generated code in ways that may not be compatible with Mac OS X 10.4 under certain situations. In general however, this should not be a problem.

To install the OutputBins2PDE you need to do the following:
1) Copy the PPD (OutputBins2Test.ppd) to /Library/Printers/PPDs/Contents/Resources/ (on Mac OS X 10.5) or /Library/Printers/PPDs/Contents/Resources/en.lproj/ (on Mac OS X 10.4)
2) Create the folder /Library/Printers/Sample/
3) Copy the build result OutputBins2PDE.bundle to /Library/Printers/Sample/
4) Create a printer that uses the OutputBins2Test.ppd, it will be named "OutputBins 2 PDE test" in the PPD list.

Now when you print to that printer you should see OutputBins and Password PDEs in the list of PDEs (on Mac OS X 10.5 they will be listed in the Vendor PDE section).

<Garbage Collection Programming Guide> http://developer.apple.com/documentation/Cocoa/Conceptual/GarbageCollection/Introduction.html

Project Configuration Details

Configuring the Targets
Much of the configuration for the OutputBins2PDE target is in the OutputBins2Config.xcconfig config file. If you open the Target Info for each of these targets, goto the Build tab and check the Based On popup menu at the bottom, you will see that both Debug & Release builds are based on this config file.
This structure allows most of the build settings for each configurations to be kept in sync automatically. Editing the xcconfig files to set a build setting automatically sets the build setting both configurations. Any settings you wish to keep specific to a particular target or configuration can still be set in the Build settings for that target.
The biggest reason for using a config file is that it allows you to specify settings that are not exposed at the GUI level. We take advantage of  architecture specific build settings to set the deployment target for our 32-bit targets to Mac OS X 10.4, while our 64-bit targets use a deployment target of Mac OS X 10.5.
You can easily extend the xcconfig files by using copy & paste to edit the xcconfig. Any setting from the Build tab can be exported to an xcconfig by copying the setting from the Target Info window and pasting it into your xcconfig file.

outputbins2pde's People

Contributors

stevemoser avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.