Nxt Plugin
==========
Nxt plugin supports development for platforms based on Nxt (http://www.nxtproject.org)

Usage
===================
Add a Nxt SDK Virtual Machine in the Nxt Options page.
Set the connection parameters for ssh connection in the Options page.
Install required targets, packages and toolchains in the Nxt SDK from the Nxt mode.
Configure toolchain, Qt version and kits for Nxt from the Nxt Options page.
Add Nxt devices from the Device Options page.
Configure the kits with the necessary devices.
Create/Import a project with the newly setup kit(s).
Build and deploy using sftp/rpm.

Classes
====================

Core classes
--------------------------------------

class NxtPlugin
    Instantiates all relevant classes.

class NxtSdk
    Encapsulates the Nxt SDK VM. It contains information such as name of the VM, shared folders, ssh
    connection parameters, toolchains, Qt versions, kits.
class NxtSdkManager
    Manages Nxt SDK VMs. It also keeps track of the current Nxt SDK VM.

class NxtQtVersionFactory
    Factory to create a Qt version for a Nxt target.
class NxtQtVersion
    Encapsulation of the Qt version of a Nxt target.

class NxtToolChainFactory
    Factory to create a toolchain for a Nxt target.
class NxtToolChain
    Encapsulation of the toolchain of a Nxt target.
class NxtSshParser
    Parses output of nxtssh to filter relevant information such as errors when Nxt SDK VM is not
    running.

class NxtDeviceFactory
    Factory to create a Nxt based device.
class NxtDevice
    Encapsulation of a Nxt based device.

class NxtDeployConfigurationFactory
    Factory to create a deploy configuration for a Nxt project.
class NxtSftpDeployConfiguration
    SFTP deploy configuration for a Nxt project.

class NxtDeployStepFactory
    Factory to create deploy steps for a Nxt project.
class NxtEmulatorStartStep
    A deploy step to start the emulator, if needed.

class NxtRunConfigurationFactory
    Factory to create a run configuration for a Nxt project.
class NxtRunConfiguration
    Run configuration for a Nxt project.

class NxtRunControlFactory
    Factory to create a run control for a Nxt project


Helper classes
--------------------------------------

class SdkScriptsUtils
    Creates wrapper scripts for qmake, make, gcc, specify, mb, rm, mv commands and stores them in
    the Qt Creator config directory under nxt-sdk-tools/<Nxt SDK VM name>/<Nxt target name>
class SdkTargetUtils
    Utility to check for installed Nxt targets in the Nxt SDK VM and adds/remove corrsponding Qt
    versions in Qt Creator for the Nxt targets.
class SdkToolChainUtils
    Utility to check for installed toolchains in the Nxt SDK VM and adds/remove corresponding
    toolchains in Qt Creator for the Nxt targets.
class SdkKitUtils
    Add/Remove Nxt kits in Qt Creator.


UI classes
--------------------------------------

class NxtDeviceConfigurationWidget
    Device configuration widget shown in the Devices Options page for a Nxt device.
class NxtDeviceConfigurationWizard
    Wizard to create a Nxt device.

class NxtDeviceConfigWizardDeviceTypePage
class NxtDeviceConfigWizardGeneralPage
class NxtDeviceConfigWizardStartPage
class NxtDeviceConfigWizardCheckPreviousKeySetupPage
class NxtDeviceConfigWizardReuseKeysCheckPage
class NxtDeviceConfigWizardKeyCreationPage
class NxtDeviceConfigWizardFinalPage


class NxtOptionsPage
    Options page for Nxt plugin.
class NxtOptionsWidget
    Widget shown in the Options page for Nxt plugin.

class SdkDetailsWidget
    Widget showing Nxt SDK VM details in the Options page.
class SdkSelectionDialog
    Widget to add a Nxt SDK VM.

class MessagesWindow
    Widget to show messages such as connection information etc. in the Options page.


Misc classes
--------------------------------------

class NxtVirtualMachineButton
    Button to show the state of the Nxt SDK VM and/or Emulator.
class NxtVirtualMachineManager
    Keeps track of ssh connections to Nxt SDK VM and/or Emulator to respond to state changes in the
    VM.

class NxtSSH
    Runs commands from the wrapper scripts over ssh.

class VirtualBoxManager
    Returns information about Virtual Machines by querying Virtual Box.

