
Nassi
=====
Mit "Nassi" können Pascal-Quelltexte mit graphisch aufbereiteten Kontrollstrukturen dargestellt werden, den "Nassi-Shneiderman"-Diagrammen".


Input
=====
Syntaktisch korrekte Quelltext-Datei (Source) einer unterstützten Programmiersprache.
Das sind zur Zeit Pascal(Turbo, Delphi), C++

Die Source kann
- per F4 und Dialog geladen werden
- per Ctrl-F4 aus der Zwischenablage geladen werden
- als Parameter beim Programmaufruf mitgegeben werden
- per Drag&Drop übergeben werden


Aufruf
======
- Nassi.exe <DateiName>
- Nassi.exe <DateiName> <ProcName>      ( nur für Pascal; ProcName ggf. incl ClassName und Punkt )


Darstellung, Views
==================
Der Quelltext wird entsprechend der Kontrollstrukturen in Blöcke und SubBlöcke unterteilt. Solch eine Darstellung ist ein View.


Ausblendungen, SubViews
=======================
Durch SubViews wird der View hierarchisch in Seiten unterteilt.
Ein SubView stellt eine Struktur mit allen ihren SubEbenen auf einer neuen Seite dar.

Für jede Prozedur/Funktion/Methode wird automatisch ein SubView erstellt. Weitere fixe SubViews für verbesserte Darstellung können manuell erstellt werden. Im übergeordneten View werden SubViews mit "»»»" und dem Text der ersten Zeile angezeigt.

Wenn die vorhandene Breite für einen Block zu klein wird, wird automatisch ein temporärer SubView erstellt, gekennzeichnet durch "»".


SubView-Speicherung
===================
Die angelegte SubView-Struktur (ohne temporäre SubViews) kann in einer Zusatzdatei als *.nassi gespeichert werden. Standardmäßig wird im User-Pfad (unter user\appdata\roaming\denkDirNix\Nassi) gespeichert, per Option kann auf den Source-Pfad umgeschaltet werden (nicht dauerhaft).
Bei Laden einer Source werden diese Pfade nacheinander (erst Source-Pfad) nach einer nassi-Datei durchsucht.
Die nassi-Datei muss neuer sein als die zugehörige Source.


BlockCursor
===========
Durch Click auf einen Block wird der Cursor (blauer Rahmen) gesetzt. Er kann auf mehrere Blöcke der gleichen Ebene erweitert werden.

Auch ohne einen formalen SubView anzulegen können die Cursor-Blöcke in einem SubView betrachtet werden ("SubView Enter as").


Hervorhebung, Highlighting
==========================
Einzelne Blöcke können zusätzlich durch eine andere Farbe optisch hervorgehoben werden.
Zur Hervorhebung eines ganzen Pfades mit mehreren Blöcken können, ausgehend von einem tieferen Block, alle in jedem Fall durchlaufenen vorhergehenden Blöcke hervorgehoben werden.


Grenzen
=======
- Die Syntax-Analyse wertet bedingte Compilierung als reinen Kommentar und liest also alle bedingten Code-Abschnitte. Falls dadurch die korrekte Struktur verlorengeht wird ein Parser-Fehler erzeugt.


Bekannte Probleme
=================
-


Bedienung
=========
F4         : Datei öffnen
F12        : Fenster normal <-> maximiert
Alt-F4     : Programm Beenden
Escape     : SubView / Programm verlassen
Num+-      : Fensterbreite ändern
Ctrl-Num+- : Schriftgröße ändern
Return     : in SubView gehen / Block als SubView darstellen
Back       : SubView verlassen
Insert     : SubView erstellen
Delete     : SubView aufheben
Ctrl-C     : Text des aktuellen Blocks (ohne SubBlöcke) kopieren
Ctrl-F     : Text suchen
F3         : Nochmal suchen
F2         : View als bmp speichern im Source-Path
Ctrl-F2    : alle Views speichern
Alt+Pfeil  : then-else-Grenze links/rechts verschieben (Cursor auf if-Block!)

Maus-
Left       : BlockCursor setzen
 + Double  : in SubView gehen
 + Shift   : BlockCursor erweitern
   + Ctrl  : ...auf alle Blöcke dieser Ebene
 + Ctrl    : Highlight Block on/off
   + Double: Highlight ganzer Pfad on/off
Right      : Popup-Menü für SubViews und Highlighting


Kontakt
=======
mailto:denkDirNix@mail.de
