T-Nano

This release of the program is running just in linux. 

Example of running:
	bash run.sh
 
	- this program requires jdk to be installed





FUNCTIONALITIES:

/*** The main menu ***/

	File:
		- New file will ask the user about the size of the circuit and after the button New is pressed the circuit will be created
		- Open file will popup a window where the user is supposed to choose a file on his computer. Just the tnn files are visible
		- Save and Save As are Enabled just when a circuit is opened. When "Save" is pressed if the circuit is new than this button will behave as "Save As".
		- Export is a tool that creates a pdf with the circuit. In the pdf is printed the part of the circuit that is visible in the gui at the moment of exportin
		- Quit ends the program

	View
		- Zoom - the user can Zoom in and Zoom out. Of course there are limits. A tile can be maximum 200x200 and minimum 10x10. 
		- Move left/right/up/down . The moving can be done with w,a,s,d keys. When a direction of moving becomes available a yellow circle appears in that part of the circuit. In general the moving part becomes available just when the circuit is zoomed enough.
		- Change theme - this tool changes the colors of the circuit.
		
	Edit
		- Click mode: by presssing this MenuItem the user switches to click mode. In this mode he can select parts of the circuit. To swith back to the mode when the user can put tiles in circuit it is enough to press any tile from toolbar or Tools. 
		- Insert component will popup a window where the user should choose a file. After selecting it this hole file can be inserted in the current circuit the user is working on.
		- Undo - functions as an universal 1do for the circuit 		
		- Redo - functions as an universal redo for the circuit

	Tools
		- In this menu are all the tools the user can see in the toolbox: wires, blank tile, Voltage tiles, transistor tiles but also IO tiles.

	Analyze 
		- This menu has multiple methods of analyzing. At the moment it has just one but several can be added very easy.
		- Fault tolerance - calculates the circuit rate of error for any circuit. This button creates a task named *.flt .
		
	Simualte
		- This menu has just one option: Run. This option returns a table with the corespondece between the values of the inputs and the values of the outputs. 

	Help
		- this menu will have a description of the program and a kind of guide for this program.

/*** Right click menu ***/

	- this menu has the classical copy, cut and paste. The paste though works a little different. When the user presses paste there won't happen an immediate paste action, but some tiles will be coloured in red and will indicate where the user wants to put the copied part. It will be needed an extra left click for completing the action.
	- from this menu the user can insert rows, remove rows, but also just delete rows. The difference between remove and delete is that the remove action will imply resizing the circuit and the delete just clearing the row of tiles.
	- the delete option in this menu is good for selections but also just for tiles.

/*** Task switcher ***/
	- in the right of the program there is a combobox which indicates the curent circuit the user is modifying. This combobox can also be used to switch between circuits. 

/*** Toolbar ***/
	- the toolbar contains all the tiles but also a tile with a mouse draw. This last tool makes the switch to click mode.
	- about input and output. When the user wants to insert an input or output tile than a window will popup and will ask him if he wants to insert a factory input, a created one or a new one inserted in a textbox. For every choice there is a submit button. 

The hot keys are specified in the menu next to the menuItems. For example next to Zoom in is '-' and next to Zoom out is '+'.

I hope I didn't forget to talk about any important stuff.





DEVELOPING STUFF:

Adding another method of analyzing:
IN order to add another method of analyzing a program is needed that has the following arguments:
	
		argv0: name of the program for example: ./runtest
		argv1: input file
		argv2: output file - with the results this method is supposed to show
		argv3: other parameter
		argv4: other parameter
		...
		last arg: a file where the program should write the progress of the execution
			- format of this file:
				5
				10
				15
				...
				100
			- the minimum thing to do is to write in this file at the end of the execution 100 for the program to work


by Daniel Pletea
	email: dani.pletea@gmail.com

