
Readme of Basic For Qt
======================

The first sections shows you a little history about Basic For Qt: The past, present and future of Basic For Qt and related programming languages
The ancestor of Basic For Qt is KBasic - a virtual machine (VM) based programming language (www.kbasic.com).

Virtual Machine based / interpreted:
------------------------------------
2000-2006 KBasic with VM 1.0 - 1.5 (Qt 3 based)
2007-2010 KBasic with VM 1.6 - 1.89 (Qt 4 based)
Planned for 2012: Basic For Qt gets the option to use a VM 2.0

C++ based / gcc runtime based + compiled to native using gcc:
--------------------------------------
2006 Objective-Basic based on KBasic 1.5 with VM (discontinued)
2009-2012 Objective-Basic 1.0 for Mac only (totally rewritten, base for Basic For Qt)
2012 Basic For Qt 1.0 for all major platforms
2013 Basic For Qt based on Qt 5 (planned)



Be sure on Linux
-----------------

You need to have installed the Qt SDK development tools and packages, before Basic For Qt will work completely.
On Windows and Mac, the Basic For Qt package inlcudes the needed Qt SDK files and no separate installation of Qt SDK is needed.


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

The latest version of Basic For Qt comes with the following features:

- The IDE of Basic For Qt is written in Basic For Qt itself and its source code is provided to study the language by the public. 
- Basic For Qt compiler written in C++ using Qt 
- Qt Designer support for creating ui files with outlets and actions
- Syntax highlighting
- Code completion for builtin-functions
- Project management
- Code browser for current source code window
- Code changes are automatically saved (so there is no save command in the IDE)
- Qt/C++ extensions enabling native Qt/C++ API calls within Basic For Qt code
- Supports most functionality of all standard Qt features
- Supports native Qt/C++ based sub-projects even other C++ widgets may be used in Basic For Qt code (signals are supported too)


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

The registered professional version comes with 
- A royalty free license, which means that you may use any other license than GPL for your application written in Basic For Qt
- A deployment feature allowing to deploy your application without the need to have Basic For Qt installed


Future versions
--------------------------------------------------
- Improved Code completion -> Classes and so on
- Will have almost all feature of the latest KBasic release
- Debugger support (tests already successfully done)
- Goto definition, goto explanation
- Localization + translation support
- Report feature to print detailed information based on a database
- To be able to directly use C++ code within Basic For Qt code (to inter share variables and functions)


Known Issues
--------------------------------------------------
- Syntax highlighting could be optimized and more accurate


What are ui files and what is Qt Designer?
-------------------------------------------------

Qt Designer is the GUI editor shipped with the official Qt SDK, which is widely used among C++ developers. It is actually the best GUI tool for Qt development, because it is tightly connected to Qt. More said, it is a main part of Qt. 

Qt Designer lets you create windows and its interface controls like buttons and save the interfaces as so called ui files, which are loaded during runtime of your program. 

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

Signals are the event function called, when ever the an event of an control is triggered. Signals are defined in your source code and are automatically connected to the interface controls in Qt designer (by recognized their unique names).

When a ui is loaded automatically, the ui loader allocates and initializes all objects, then hooks up all of their outlets and actions. After all outlets and actions are connected your ui object is ready for use.

Whenever you change code by adding or removing Actions or Outlets, make sure to keep it updated with update Qt designer and vice verca.


