NAME
App::Asciio - Plain ASCII diagram
| | | || | | | | || | | | | |v | v | v |v v v_____ _____/\ _ \ /\ __ \\ \ \_\ \ ___ ___ _ _\ \ \ \ \-----> \ \ __ \ / __\ / ___\/\ \/\ \ \ \ \ \ ----->\ \ \ \ \/\__, \/\ \___' \ \ \ \ \ \_\ \\ \_\ \_\/\____/\ \____/\ \_\ \_\ \_____\\/_/\/_/\/___/ \/___/ \/_/\/_/\/_____/| | | || | | | | | |v | | | v | || v | | |v | | vv 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 | vv
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_BSomething--------. / \\ / '---Base::Class::Derived::MoreSomething::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::OneMore::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 HamoudaCPAN ID: NKHmailto:[email protected]
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.dehttp://search.cpan.org/~osfameron/Text-JavE-0.0.2/JavE.pmhttp://ditaa.sourceforge.net/http://www.codeproject.com/KB/macros/codeplotter.aspxhttp://search.cpan.org/~jpierce/Text-FIGlet-1.06/FIGlet.pmhttp://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?UmlAsciiArthttp://www.textfiles.com/art/http://www2.b3ta.com/_bunny/texbunny.gif*\o_ _o/*/ * * \<\ *\o/* />)o/* / > *\o<\ />__o */\ /\* o__* /> <\ */\* __o_ _o__ */\* / * * \ *<\ />*\o/*ejm97 __)__