| App::Asciio(3pm) | User Contributed Perl Documentation | App::Asciio(3pm) |
NAME¶
App::Asciio - Plain ASCII diagram
| | | |
| | | | | |
| | | | | |
v | v | v |
v v v
_____ _____
/\ _ \ /\ __ \
\ \ \_\ \ ___ ___ _ _\ \ \ \ \
-----> \ \ __ \ / __\ / ___\/\ \/\ \ \ \ \ \ ----->
\ \ \ \ \/\__, \/\ \___' \ \ \ \ \ \_\ \
\ \_\ \_\/\____/\ \____/\ \_\ \_\ \_____\
\/_/\/_/\/___/ \/___/ \/_/\/_/\/_____/
| | | |
| | | | | | |
v | | | v | |
| v | | |
v | | v
v v
(\_/)
(O.o) ASCII world domination is near!
(> <)
SYNOPSIS¶
$> perl asciio.pl
DESCRIPTION¶
It has always been painful to do ASCII diagrams by hand. This perl application allows you to draw ASCII diagrams in a modern (but simple) graphical interface.
The ASCII graphs can be saved as ASCII or in a format that allows you to modify them later.
Special thanks go to the Muppet and the gtk-perl group, Gabor Szabo for his help and advices.
Adam Kennedy coined the cool name.
DOCUMENTATION¶
Asciio user interface¶
.-----------------------------------------------------------------.
| Asciio |
|-----------------------------------------------------------------|
| ............................................................... |
| ..............-------------..------------..--------------...... |
| .............| stencils > || asciio > || box |..... |
| .............| Rulers > || computer > || text |..... |
| .............| File > || people > || wirl_arrow |..... |
grid---------->.......'-------------'| divers > || axis |..... |
| ......................^.....'------------'| boxes > |..... |
| ......................|...................| rulers > |..... |
| ......................|...................'--------------'..... |
| ......................|........................................ |
| ......................|........................................ |
| ......................|........................................ |
| ......................|........................................ |
'-----------------------|-----------------------------------------'
|
|
context menu
Press 'F1' for help.
context menu¶
The context menu allows one to access to Asciio commands.
keyboard shortcuts¶
All the keyboard commands definitions can be found under asciio/setup/actions/. Among the commands implemented are:
- select all
- delete
- undo
- group/ungroup
- open / save
- local clipboard operations
- send to front/back
- insert arrow, boxes, text
- ...
The available commands are displayed if you press K.
elements¶
There are a few elements implemented at the moment.
wirl arrow
An arrow that tries to do what you want. Try rotating the end clockwise then counter clockwise to see how it acts
^
|
| --------.
| |
'------- |
|
O-------------X / |
/ |
/ |
/ v
/
/
v
multi section wirl arrow
A set of whirl arrows connected to each other
.----------. .
| | \ / \
.-------' ^ \ / \
| \ \ / \
| .-----------> \ ' .
| '----. \ /
| | \ /
'--------' '-------'
angled arrow and axis
-------. .-------
\ /
\ /
\ /
/ \
/ \
/ \
------' '-------
^
^ | ^
\ | /
\ | /
\ | /
<-------- -------->
/ |\
/ | \
/ | \
v | v
v
box and text
.----------.
| title |
.----------. |----------| ************
| | | body 1 | * *
'----------' | body 2 | ************
'----------'
anything in a box
(\_/) |
edit_me (O.o) <------------'
(> <)
You can also use the 'External commands in box' to direct an external command output to a box. Default shortcuts are 'x' and CTL + 'x'.
"if" box and "process" box
____________ .--------------. \ \ / a == b \ \ \ __________ ( && ) ) process ) \ \ \ 'string' ne '' / / / ) process ) '--------------' /___________/ /_________/
your own stencils
Take a look at setup/stencils/computer for a stencil example. Stencils listed in setup/setup.ini will be loaded when Asciio starts.
your own element type
For simple elements, put your design in a box. That should cover 90% of anyone's needs. You can look in lib/stripes for element implementation examples.
exporting to ASCII¶
You can export to a file in ASCII format but using the .txt extension.
Exporting to the clipboard is done with ctl + e.
EXAMPLES¶
User code ^ ^ OS code
\ /
\ /
\ /
User code <----Mode----->OS code
/ \
/ \
/ \
User code v v OS code
.---. .---. .---. .---. .---. .---.
OS API '---' '---' '---' '---' '---' '---'
| | | | | |
v v | v | v
.------------. | .-----------. | .-----.
| Filesystem | | | Scheduler | | | MMU |
'------------' | '-----------' | '-----'
| | | |
v | | v
.----. | | .---------.
| IO |<----' | | Network |
'----' | '---------'
| | |
v v v
.---------------------------------------.
| HAL |
'---------------------------------------'
.---------. .---------.
| State 1 | | State 2 |
'---------' '---------'
^ \ ^ \
/ \ / \
/ \ / \
/ \ / \
/ \ / \
/ v v
****** ****** ******
* T1 * * T2 * * T3 *
****** ****** ******
^ ^ /
\ \ /
\ \ /
\ \ / stimuli
\ \ /
\ \ v
\ .---------.
'--------| State 3 |
'---------'
.--Base::Class::Derived_A
/
.----Base::Class::Derived_B
Something--------. / \
\ / '---Base::Class::Derived::More
Something::else \ / \
\ \ / '-Base::Class::Derived::Deeper
\ \ /
\ \ .-----------Base::Class::Derived_C
\ \ /
'-------Base::Class
/ \ \ \
' \ \ \
| \ \ '---The::Latest
/| \ \ \
With::Some::fantasy' ' \ \ '----The::Latest::Greatest
/| \ \
More::Stuff' ' \ '-I::Am::Running::Out::Of::Ideas
/| \
More::Stuff' ' \
/ '---Last::One
More::Stuff'
____[]
| ___ |
|| || device
||___|| loads
| ooo |------------------------------------------------------------.
| ooo | | | |
| ooo | | | |
'_____' | | |
| | |
v v v
.-------------------. .---------------------------. .-------------------.
| Loadable module C | | Loadable module A | | Loadable module B |
'-------------------' |---------------------------| | (instrumented) |
| | .-----. | '-------------------'
'--------------------->| A.o | | |
calls | '-----' | |
| .------------------. | |
| | A.instrumented.o |<-----------------'
| '------------------' | calls
'---------------------------'
DEPENDENCIES¶
gnome libraries, gtk, gtk-perl for the gtk version
BUGS AND LIMITATIONS¶
Undoubtedly many as I wrote this as a fun little project where I used no design nor 'methodic' whatsoever.
AUTHOR¶
Khemir Nadim ibn Hamouda
CPAN ID: NKH
mailto:nadim@khemir.net
LICENSE AND COPYRIGHT¶
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
SUPPORTED OSes¶
Gentoo¶
I run gentoo, packages to install gtk-perl exist. Install Asciio with cpan.
FreeBSD¶
FreeBSD users can now install asciio either by package:
$ pkg_add -r asciio
or from source (out of the ports system) by:
$ cd /usr/ports/graphics/asciio $ make install clean
Thanks to Emanuel Haupt.
Ubuntu and Debian¶
Ports are on the way.
Windows¶
Asciio is part of the camelbox distribution and can be found here: <http://code.google.com/p/camelbox/>. Install, run AsciiO from the 'bin' directory.
.-------------------------------.
/ /|
/ camelbox for win32 / |
/ / |
/ / |
.-------------------------------. |
| ______\\_, | |
| (_. _ o_ _/ | |
| '-' \_. / | |
| / / | |
| / / .--. .--. | |
| ( ( / '' \/ '' \ " | |
| \ \_.' \ ) | |
| || _ './ | |
| |\ \ ___.'\ / | |
| '-./ .' \ |/ | |
| \| / )|\ | |
| |/ // \\ | .
| |\ __// \\__ | /
| //\\ /__/ mrf\__| | /
| .--_/ \_--. | /
| /__/ \__\ |/
'-------------------------------'
camelbox is a great distribution for windows. I hope it will merge with X-berry series of Perl distributions.
Mac OsX¶
This works too (and I have screenshots to prove it :). I don't own a mac and the mac user hasn't send me how to do it yet.
other unices¶
YMMV, install gtk-perl and AsciiO from cpan.
SEE ALSO¶
http://www.jave.de http://search.cpan.org/~osfameron/Text-JavE-0.0.2/JavE.pm http://ditaa.sourceforge.net/ http://www.codeproject.com/KB/macros/codeplotter.aspx http://search.cpan.org/~jpierce/Text-FIGlet-1.06/FIGlet.pm http://www.fossildraw.com/?gclid=CLanxZXxoJECFRYYEAodnBS8Dg (doesn't always respond) http://www.ascii-art.de (used some entries as base for the network stencil) http://c2.com/cgi/wiki?UmlAsciiArt http://www.textfiles.com/art/ http://www2.b3ta.com/_bunny/texbunny.gif *\o_ _o/* / * * \ <\ *\o/* /> ) o/* / > *\o <\ /> __o */\ /\* o__ * /> <\ * /\* __o_ _o__ */\ * / * * \ * <\ /> *\o/* ejm97 __)__
| 2017-11-07 | perl v5.26.1 |