App::Asciio

Contents [ ]
  • NAME
  • SYNOPSIS
  • DESCRIPTION
  • DOCUMENTATION
    • Asciio user interface
    • context menu
    • keyboard shortcuts
    • elements
      • wirl arrow
      • multi section wirl arrow
      • angled arrow and axis
      • box and text
      • "if" box and "process" box
      • your own stencils
      • your own element type
    • exporting to ASCII
  • EXAMPLES
  • DEPENDENCIES
  • BUGS AND LIMITATIONS
  • AUTHOR
  • LICENSE AND COPYRIGHT
  • SUPPORTED OSes
    • Gentoo
    • FreeBSD
    • Ubuntu and Debian
    • Windows
  • Mac OsX
  • other unices
  • SEE ALSO

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, Gábor Szabó 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 to access to Asciio commands.

keyboard shortcuts

All the keyboad 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://www.ascii-art.de (used some entries as base for the network stencil)
        
    *\o_               _o/*
     /  *             *  \
    <\       *\o/*       />
               )
        o/*   / >    *\o
        <\            />
__o     */\          /\*     o__
* />                        <\ *
 /\*    __o_       _o__     */\
       * /  *     *  \ *
        <\           />
             *\o/*
ejm97        __)__

1 POD Error

The following errors were encountered while parsing the POD:

Around line 68:

Non-ASCII character seen before =encoding in 'Gábor'. Assuming ISO8859-1

(0)

相关推荐