
Readme of Q7Basic
=================



Past, Present and Future

Virtual Machine based / interpreted:
------------------------------------
2000-2006 KBasic 1.0 - 1.5
2007-2010 KBasic 1.6 - 1.89
Planned for 2011: KBasic 2.0 with VM

gcc runtime based / compiled with gcc:
--------------------------------------
2006 Objective-Basic based on KBasic with VM
2009-2010 Objective-Basic 1.0 
2010 Q7Basic 1.0













Attention! You need to have installed the Mac development tools and packages (Xcode, Interface Builder, ), before Objective-Basic will work completely.
Support for PowerPC based Macs has been discontinued, because there are not supported anymore on Snow Leopard and future releases of Mac OS X.


Current status
--------------

- The IDE of Objective-Basic is written in Objective-Basic itself and its source code is provided to study the language and implemented features for the public. 
Valid enterprise license holders is granted full access to all source codes of the development package including the source codes for the Objective-Basic compiler and the runtime source codes.

The latest version of Objective-Basic comes with the following features:
- Objective-Basic compiler (written in C++ using Qt - dynamically linked). 
--> Please write back if you encounter an error. Didn't have the possibility to test it on a Mac without Qt installed.

- Interface Builder for creating nib files with outlets and actions and custom objects and classes
--> Please inform me when you cannot use Interface Builder to connect IBActions or IBOutlets. To communicate with Interface Builder, the IDE of Objective-Basic runs a communication server and tries to check the needed version by querying the version number of the installed Xcode. There must be green light shining on the main window of Interface Builder, if it is working.

- syntax highlighting
- project management and file find + file replace
- code browser for current source code window
- code changes are automatically saved (so there is no save command in the IDE)
- goto last position, goto last error
- code completion -> text editor is ready to manage and to trigger for ". as (" and so on
- Objective-C extensions enabling native Objective-C API calls within Objective-Basic code
- Support for Intel Macs on Mac OS X 10.5 Leopard as deployment and development platform is not planned, due to the features of Mac OS X 10.6 Snow Leopard


Difference between registered and unregistered version?
-------------------------------------------------------

The registered professional version comes with 
- A deployment feature allowing to deploy your application as 32 bit for Intel Macs without the need to have Objective-Basic installed
- Get advanced documentation about Objective-Basic and Cocoa
- Get all source codes of the Objective-Basic compiler (for Enterprise licensees only, please contact us)


Future versions
--------------------------------------------------
- Debugger support (tests already successfully done)
- goto definition, goto explanation
- to support most functionality of all standard Cocoa features
- NIB files are compiled to binary files XIB, making it impossible for others to use your Interface Builder files
- localization + translation support
- full native support for Core Data
- use of any interface builder plugin developed for Objective-C applications
- full native database support for mysql. Others will follow.
- report feature to print detailed information based on a database or Core Data
- plugin framework (tests already successfully done) including native Objective-C as it were Objective-Basic code (both with sources or binary only)
- to be able to directly use Objective-C code within Objective-Basic code (to inter share variables and functions)
- 64 bit support is prepared

Known Issues
--------------------------------------------------
- Code completion list works as a modal window, so you cannot move around in the code while code completion is popped up
- Code completion does not recognize Objective-C extension through 'Declare'
- Syntax highlighting could be optimized and more accurate
- Separator lines in the code window could be more accurate


What are nib files and what is Interface Builder?
-------------------------------------------------

Interface Builder is the GUI editor provided by Apple, which is widely used among Objective-C developers. It is actually the best GUI tool for Mac development, because it is tightly connected to Cocoa. More said, it is a main part of Cocoa. Cocoa is an object-oriented application environment designed specifically for developing Mac applications quickly and efficiently. 

Interface Builder lets you create windows and its interface controls like buttons and save the interfaces as so called nib files, which are loaded during runtime of your program. But nib files may also contain information about executing your code and which custom objects or classes should be used in your program.

IBOutlets let you connect variables located in your source codes to interface controls like buttons.

IBActions are the event function called, when ever the default event of the control is triggered. IBActions are defined in your source code and then connected to the interface controls in Interface Builder.

When a nib is loaded, the nib loader allocates and initializes all objects, then hooks up all of their outlets and actions. After all outlets and actions are connected, the nib loader sends AwakeFromNib to every object in the nib. This is where you can access outlets to set up default values or do configuration in code.

Whenever you change code by adding or removing IBActions or IBOutlets, hit the "Make Objective-Basic" to update Interface Builder.


