SlideShare a Scribd company logo
1 of 28
Curses::Toolkit
    FOSDEM 2011




                  dams - FOSDEM’11
Who I am


• I‘m dams (Damien Krotkine)
• french Perl Monger, doing Perl stuff for many
  years (at work and at home)
• not good at blogging, twittering, etc ☺

                                             dams - FOSDEM’11
This talk


• Commercial breaks
• slides
• demonstration ( the fun part )


                                   dams - FOSDEM’11
Commercial breaks
  ☺          ☺




                    dams - FOSDEM’11
• Part of the French Perl Mongers
• We have a cool logo
• organizing the FPW 2011 ➸ Paris, be there !
• http://journeesperl.fr/fpw2011
                                           dams - FOSDEM’11
• Cool Perl centric company
• sponsored me
• they are hiring two Perl devs & one dba
• http://weborama.com
                                       dams - FOSDEM’11
• Effortless Web Framework for Perl
• easy, powerful, flexible, stable
• nice community
• http://perldancer.org
                                      dams - FOSDEM’11
• All about modern Perl
• french book
• 4 authors (including me)
• 450 pages
• available here, go buy it !
• http://perlmoderne.fr

                           dams - FOSDEM’11
End of Commercials
   ☹   ☠☢☣   ☹




                     dams - FOSDEM’11
Curses::Toolkit

• do you use a Terminal ?
• do you know ncurses ?
• do you know GTK / QT ?
• Curses : perl binding
• Curses based Toolkit in Perl,
  inspired by GTK


                                  dams - FOSDEM’11
1. History of
Curses::Toolkit



                  dams - FOSDEM’11
History


• I’ve been doing ncurses based stuff before
• some Gentoo Linux app, like profuse
• RT::Client::Console for Venda(tm)


                                               dams - FOSDEM’11
Existing solutions Issues
• Curses module on CPAN not good enough
• Curses : too low level
• Curses::UI : buggy, absolute coordinates,
  event loop not flexible
• Curses::Widget : horrible API, event loop
  too simple, Widget::Forms too heavy
• damned manual hellish coordinates
  calculation !

                                              dams - FOSDEM’11
Curses::Toolkit
• a true toolkit, with widgets and events
• OO hierarchy.
• events : keyboard, mouse, timers, etc
• Fully themable
• POE based event loop
• no damned manual hellish coordinates
  calculation anymore !

                                            dams - FOSDEM’11
2. Concepts



              dams - FOSDEM’11
Terminal
             Root window

             Window

Label
             Widget
Widget::Label



                          everything goes through
         theme
                                the theme




                 screen
Root window



  Window1                   Window2



    Box


Border    Button


Label
Object Hierarchy
Curses::Toolkit::Widget
|
+-- Curses::Toolkit::Widget::Label
|
+-- Curses::Toolkit::Widget::Entry
|
+-- Curses::Toolkit::Widget::Scrollbar
|   |
|   +-- Curses::Toolkit::Widget::HScrollbar
|   |
|   +-- Curses::Toolkit::Widget::VScrollbar
|
+-- Curses::Toolkit::Widget::Container
    |
    +-- Curses::Toolkit::Widget::HBox
    |
    +-- Curses::Toolkit::Widget::VBox
    |
    +-- Curses::Toolkit::Widget::Paned
    |   |
    |   +-- Curses::Toolkit::Widget::HPaned
    |   |
    |   +-- Curses::Toolkit::Widget::VPaned
    |
    +-- Curses::Toolkit::Widget::Bin
        |
        +-- Curses::Toolkit::Widget::Border
            |
            +-- Curses::Toolkit::Widget::Window
            |
            +-- Curses::Toolkit::Widget::Button
            |
            +-- Curses::Toolkit::Widget::GenericButton
            |
            +-- Curses::Toolkit::Widget::ProgressBar
                |
                +-- Curses::Toolkit::Widget::HProgressBar
                |
                +-- Curses::Toolkit::Widget::VProgressBar




                                                        dams - FOSDEM’11
Signals
• signals can com from
 • keyboards
 • mouse
 • timer
 • terminal resize
• they are sent back and forth to POE
• simply use signal_connect( signal => sub { } )
                                              dams - FOSDEM’11
Cool stuff
• Windows
 • have animated titles
 • can be moved / resized (with mouse too)
• labels
 • can wrap, be justified
 • support tagging (colors, bold...) like GTK
• entries
 • support shortcuts
                                                dams - FOSDEM’11
3. Code



          dams - FOSDEM’11
my $root = POE::Component::Curses->spawn;

my $window = Curses::Toolkit::Widget::Window->new;

my $label = Curses::Toolkit::Widget::Label->new;

$root->add_window( $window );

$window->add_widget( $label );

$window->set_coordinates( x1 => 0,    y1 => 0,
                          x2 => 40,   y2 => 20 );

POE::Kernel->run;
POE::Component::Curses->spawn
  ->add_window(
     Curses::Toolkit::Widget::Window
       ->new()
       ->set_coordinates(x1 => 0,    y1 => 0,
                         x2 => 40, y2 => 20)
       ->add_widget(
         Curses::Toolkit::Widget::Label
           ->new()
       )
  );

POE::Kernel->run;
DEMO



       dams - FOSDEM’11
Thanks !


•   Curses::Toolkit on CPAN

•   http://damien.krotkine.com/blog

•   http://github.com/curses-toolkit




                                       dams - FOSDEM’11

More Related Content

What's hot

How we used ruby to build locaweb's cloud (http://presentations.pothix.com/ru...
How we used ruby to build locaweb's cloud (http://presentations.pothix.com/ru...How we used ruby to build locaweb's cloud (http://presentations.pothix.com/ru...
How we used ruby to build locaweb's cloud (http://presentations.pothix.com/ru...Willian Molinari
 
CP3108B (Mozilla) Sharing Session on Add-on SDK
CP3108B (Mozilla) Sharing Session on Add-on SDKCP3108B (Mozilla) Sharing Session on Add-on SDK
CP3108B (Mozilla) Sharing Session on Add-on SDKMifeng
 
The Transparent Web: Bridging the Chasm in Web Development
The Transparent Web: Bridging the Chasm in Web DevelopmentThe Transparent Web: Bridging the Chasm in Web Development
The Transparent Web: Bridging the Chasm in Web Developmenttwopoint718
 
Ansible - Swiss Army Knife Orchestration
Ansible - Swiss Army Knife OrchestrationAnsible - Swiss Army Knife Orchestration
Ansible - Swiss Army Knife Orchestrationbcoca
 
Ruby v cpp_preso
Ruby v cpp_presoRuby v cpp_preso
Ruby v cpp_presojessicard
 
Automating Complex Setups with Puppet
Automating Complex Setups with PuppetAutomating Complex Setups with Puppet
Automating Complex Setups with PuppetKris Buytaert
 
Node js quick tour v2
Node js quick tour v2Node js quick tour v2
Node js quick tour v2Wyatt Fang
 
Xen Summit 2008 Tokyo - Operating Xen domains through LL(Perl/Python) with li...
Xen Summit 2008 Tokyo - Operating Xen domains through LL(Perl/Python) with li...Xen Summit 2008 Tokyo - Operating Xen domains through LL(Perl/Python) with li...
Xen Summit 2008 Tokyo - Operating Xen domains through LL(Perl/Python) with li...Gosuke Miyashita
 
Palm Developer Day PhoneGap
Palm Developer Day PhoneGap Palm Developer Day PhoneGap
Palm Developer Day PhoneGap Brian LeRoux
 
Secrets with Ansible
Secrets with AnsibleSecrets with Ansible
Secrets with AnsibleDougBridgens
 
Front End Development Automation with Grunt
Front End Development Automation with GruntFront End Development Automation with Grunt
Front End Development Automation with GruntLadies Who Code
 
Operation Oriented Web Applications / Yokohama pm7
Operation Oriented Web Applications / Yokohama pm7Operation Oriented Web Applications / Yokohama pm7
Operation Oriented Web Applications / Yokohama pm7Masahiro Nagano
 
Asynchronous PHP and Real-time Messaging
Asynchronous PHP and Real-time MessagingAsynchronous PHP and Real-time Messaging
Asynchronous PHP and Real-time MessagingSteve Rhoades
 

What's hot (17)

How we used ruby to build locaweb's cloud (http://presentations.pothix.com/ru...
How we used ruby to build locaweb's cloud (http://presentations.pothix.com/ru...How we used ruby to build locaweb's cloud (http://presentations.pothix.com/ru...
How we used ruby to build locaweb's cloud (http://presentations.pothix.com/ru...
 
Automating with Ansible
Automating with AnsibleAutomating with Ansible
Automating with Ansible
 
CP3108B (Mozilla) Sharing Session on Add-on SDK
CP3108B (Mozilla) Sharing Session on Add-on SDKCP3108B (Mozilla) Sharing Session on Add-on SDK
CP3108B (Mozilla) Sharing Session on Add-on SDK
 
The Transparent Web: Bridging the Chasm in Web Development
The Transparent Web: Bridging the Chasm in Web DevelopmentThe Transparent Web: Bridging the Chasm in Web Development
The Transparent Web: Bridging the Chasm in Web Development
 
Ansible - Swiss Army Knife Orchestration
Ansible - Swiss Army Knife OrchestrationAnsible - Swiss Army Knife Orchestration
Ansible - Swiss Army Knife Orchestration
 
Gashuku Presen
Gashuku PresenGashuku Presen
Gashuku Presen
 
Ruby v cpp_preso
Ruby v cpp_presoRuby v cpp_preso
Ruby v cpp_preso
 
Automating Complex Setups with Puppet
Automating Complex Setups with PuppetAutomating Complex Setups with Puppet
Automating Complex Setups with Puppet
 
10 Data caching
10 Data caching10 Data caching
10 Data caching
 
Node js quick tour v2
Node js quick tour v2Node js quick tour v2
Node js quick tour v2
 
Xen Summit 2008 Tokyo - Operating Xen domains through LL(Perl/Python) with li...
Xen Summit 2008 Tokyo - Operating Xen domains through LL(Perl/Python) with li...Xen Summit 2008 Tokyo - Operating Xen domains through LL(Perl/Python) with li...
Xen Summit 2008 Tokyo - Operating Xen domains through LL(Perl/Python) with li...
 
WebSocket
WebSocketWebSocket
WebSocket
 
Palm Developer Day PhoneGap
Palm Developer Day PhoneGap Palm Developer Day PhoneGap
Palm Developer Day PhoneGap
 
Secrets with Ansible
Secrets with AnsibleSecrets with Ansible
Secrets with Ansible
 
Front End Development Automation with Grunt
Front End Development Automation with GruntFront End Development Automation with Grunt
Front End Development Automation with Grunt
 
Operation Oriented Web Applications / Yokohama pm7
Operation Oriented Web Applications / Yokohama pm7Operation Oriented Web Applications / Yokohama pm7
Operation Oriented Web Applications / Yokohama pm7
 
Asynchronous PHP and Real-time Messaging
Asynchronous PHP and Real-time MessagingAsynchronous PHP and Real-time Messaging
Asynchronous PHP and Real-time Messaging
 

Similar to Curses::Toolkit

Taking Control of Chaos with Docker and Puppet
Taking Control of Chaos with Docker and PuppetTaking Control of Chaos with Docker and Puppet
Taking Control of Chaos with Docker and PuppetPuppet
 
Docker puppetcamp london 2013
Docker puppetcamp london 2013Docker puppetcamp london 2013
Docker puppetcamp london 2013Tomas Doran
 
PuppetCamp SEA 1 - Using Vagrant, Puppet, Testing & Hadoop
PuppetCamp SEA 1 - Using Vagrant, Puppet, Testing & HadoopPuppetCamp SEA 1 - Using Vagrant, Puppet, Testing & Hadoop
PuppetCamp SEA 1 - Using Vagrant, Puppet, Testing & HadoopOlinData
 
Using Vagrant, Puppet, Testing & Hadoop
Using Vagrant, Puppet, Testing & HadoopUsing Vagrant, Puppet, Testing & Hadoop
Using Vagrant, Puppet, Testing & HadoopPuppet
 
PuppetCamp SEA 1 - Using Vagrant, Puppet, Testing & Hadoop
PuppetCamp SEA 1 - Using Vagrant, Puppet, Testing & HadoopPuppetCamp SEA 1 - Using Vagrant, Puppet, Testing & Hadoop
PuppetCamp SEA 1 - Using Vagrant, Puppet, Testing & HadoopWalter Heck
 
Django dev-env-my-way
Django dev-env-my-wayDjango dev-env-my-way
Django dev-env-my-wayRobert Lujo
 
Dockercon EU 2014
Dockercon EU 2014Dockercon EU 2014
Dockercon EU 2014Rafe Colton
 
The Tale of a Docker-based Continuous Delivery Pipeline by Rafe Colton (ModCl...
The Tale of a Docker-based Continuous Delivery Pipeline by Rafe Colton (ModCl...The Tale of a Docker-based Continuous Delivery Pipeline by Rafe Colton (ModCl...
The Tale of a Docker-based Continuous Delivery Pipeline by Rafe Colton (ModCl...Docker, Inc.
 
On the Edge Systems Administration with Golang
On the Edge Systems Administration with GolangOn the Edge Systems Administration with Golang
On the Edge Systems Administration with GolangChris McEniry
 
On non existent 0-days, stable binary exploits and
On non existent 0-days, stable binary exploits andOn non existent 0-days, stable binary exploits and
On non existent 0-days, stable binary exploits andAlisa Esage Шевченко
 
Open Source Tools for Leveling Up Operations FOSSET 2014
Open Source Tools for Leveling Up Operations FOSSET 2014Open Source Tools for Leveling Up Operations FOSSET 2014
Open Source Tools for Leveling Up Operations FOSSET 2014Mandi Walls
 
Esage on non-existent 0-days, stable binary exploits and user interaction
Esage   on non-existent 0-days, stable binary exploits and user interactionEsage   on non-existent 0-days, stable binary exploits and user interaction
Esage on non-existent 0-days, stable binary exploits and user interactionDefconRussia
 
DockerDay2015: Getting started with Google Container Engine
DockerDay2015: Getting started with Google Container EngineDockerDay2015: Getting started with Google Container Engine
DockerDay2015: Getting started with Google Container EngineDocker-Hanoi
 
Vagrant - Team Development made easy
Vagrant - Team Development made easyVagrant - Team Development made easy
Vagrant - Team Development made easyMarco Silva
 
Docker and-containers-for-development-and-deployment-scale12x
Docker and-containers-for-development-and-deployment-scale12xDocker and-containers-for-development-and-deployment-scale12x
Docker and-containers-for-development-and-deployment-scale12xrkr10
 
Docker Online Meetup #3: Docker in Production
Docker Online Meetup #3: Docker in ProductionDocker Online Meetup #3: Docker in Production
Docker Online Meetup #3: Docker in ProductionDocker, Inc.
 
Modern tooling to assist with developing applications on FreeBSD
Modern tooling to assist with developing applications on FreeBSDModern tooling to assist with developing applications on FreeBSD
Modern tooling to assist with developing applications on FreeBSDSean Chittenden
 

Similar to Curses::Toolkit (20)

Taking Control of Chaos with Docker and Puppet
Taking Control of Chaos with Docker and PuppetTaking Control of Chaos with Docker and Puppet
Taking Control of Chaos with Docker and Puppet
 
Docker puppetcamp london 2013
Docker puppetcamp london 2013Docker puppetcamp london 2013
Docker puppetcamp london 2013
 
PuppetCamp SEA 1 - Using Vagrant, Puppet, Testing & Hadoop
PuppetCamp SEA 1 - Using Vagrant, Puppet, Testing & HadoopPuppetCamp SEA 1 - Using Vagrant, Puppet, Testing & Hadoop
PuppetCamp SEA 1 - Using Vagrant, Puppet, Testing & Hadoop
 
Using Vagrant, Puppet, Testing & Hadoop
Using Vagrant, Puppet, Testing & HadoopUsing Vagrant, Puppet, Testing & Hadoop
Using Vagrant, Puppet, Testing & Hadoop
 
PuppetCamp SEA 1 - Using Vagrant, Puppet, Testing & Hadoop
PuppetCamp SEA 1 - Using Vagrant, Puppet, Testing & HadoopPuppetCamp SEA 1 - Using Vagrant, Puppet, Testing & Hadoop
PuppetCamp SEA 1 - Using Vagrant, Puppet, Testing & Hadoop
 
Django dev-env-my-way
Django dev-env-my-wayDjango dev-env-my-way
Django dev-env-my-way
 
Dockercon EU 2014
Dockercon EU 2014Dockercon EU 2014
Dockercon EU 2014
 
Docker 2014
Docker 2014Docker 2014
Docker 2014
 
The Tale of a Docker-based Continuous Delivery Pipeline by Rafe Colton (ModCl...
The Tale of a Docker-based Continuous Delivery Pipeline by Rafe Colton (ModCl...The Tale of a Docker-based Continuous Delivery Pipeline by Rafe Colton (ModCl...
The Tale of a Docker-based Continuous Delivery Pipeline by Rafe Colton (ModCl...
 
On the Edge Systems Administration with Golang
On the Edge Systems Administration with GolangOn the Edge Systems Administration with Golang
On the Edge Systems Administration with Golang
 
On non existent 0-days, stable binary exploits and
On non existent 0-days, stable binary exploits andOn non existent 0-days, stable binary exploits and
On non existent 0-days, stable binary exploits and
 
Small Screen Development
Small Screen DevelopmentSmall Screen Development
Small Screen Development
 
Open Source Tools for Leveling Up Operations FOSSET 2014
Open Source Tools for Leveling Up Operations FOSSET 2014Open Source Tools for Leveling Up Operations FOSSET 2014
Open Source Tools for Leveling Up Operations FOSSET 2014
 
Esage on non-existent 0-days, stable binary exploits and user interaction
Esage   on non-existent 0-days, stable binary exploits and user interactionEsage   on non-existent 0-days, stable binary exploits and user interaction
Esage on non-existent 0-days, stable binary exploits and user interaction
 
DockerDay2015: Getting started with Google Container Engine
DockerDay2015: Getting started with Google Container EngineDockerDay2015: Getting started with Google Container Engine
DockerDay2015: Getting started with Google Container Engine
 
Vagrant - Team Development made easy
Vagrant - Team Development made easyVagrant - Team Development made easy
Vagrant - Team Development made easy
 
Docker and-containers-for-development-and-deployment-scale12x
Docker and-containers-for-development-and-deployment-scale12xDocker and-containers-for-development-and-deployment-scale12x
Docker and-containers-for-development-and-deployment-scale12x
 
Docker Online Meetup #3: Docker in Production
Docker Online Meetup #3: Docker in ProductionDocker Online Meetup #3: Docker in Production
Docker Online Meetup #3: Docker in Production
 
Modern tooling to assist with developing applications on FreeBSD
Modern tooling to assist with developing applications on FreeBSDModern tooling to assist with developing applications on FreeBSD
Modern tooling to assist with developing applications on FreeBSD
 
Touch your NetBSD
Touch your NetBSDTouch your NetBSD
Touch your NetBSD
 

More from Damien Krotkine

Stockage et analyse temps réel d'événements avec Riak chez Booking.com
Stockage et analyse temps réel d'événements avec Riak chez Booking.comStockage et analyse temps réel d'événements avec Riak chez Booking.com
Stockage et analyse temps réel d'événements avec Riak chez Booking.comDamien Krotkine
 
Using Riak for Events storage and analysis at Booking.com
Using Riak for Events storage and analysis at Booking.comUsing Riak for Events storage and analysis at Booking.com
Using Riak for Events storage and analysis at Booking.comDamien Krotkine
 

More from Damien Krotkine (6)

Stockage et analyse temps réel d'événements avec Riak chez Booking.com
Stockage et analyse temps réel d'événements avec Riak chez Booking.comStockage et analyse temps réel d'événements avec Riak chez Booking.com
Stockage et analyse temps réel d'événements avec Riak chez Booking.com
 
Using Riak for Events storage and analysis at Booking.com
Using Riak for Events storage and analysis at Booking.comUsing Riak for Events storage and analysis at Booking.com
Using Riak for Events storage and analysis at Booking.com
 
Riak introduction
Riak introductionRiak introduction
Riak introduction
 
Message passing
Message passingMessage passing
Message passing
 
Comma versus list
Comma versus listComma versus list
Comma versus list
 
Dancing with websocket
Dancing with websocketDancing with websocket
Dancing with websocket
 

Curses::Toolkit

  • 1. Curses::Toolkit FOSDEM 2011 dams - FOSDEM’11
  • 2. Who I am • I‘m dams (Damien Krotkine) • french Perl Monger, doing Perl stuff for many years (at work and at home) • not good at blogging, twittering, etc ☺ dams - FOSDEM’11
  • 3. This talk • Commercial breaks • slides • demonstration ( the fun part ) dams - FOSDEM’11
  • 4. Commercial breaks ☺ ☺ dams - FOSDEM’11
  • 5. • Part of the French Perl Mongers • We have a cool logo • organizing the FPW 2011 ➸ Paris, be there ! • http://journeesperl.fr/fpw2011 dams - FOSDEM’11
  • 6. • Cool Perl centric company • sponsored me • they are hiring two Perl devs & one dba • http://weborama.com dams - FOSDEM’11
  • 7. • Effortless Web Framework for Perl • easy, powerful, flexible, stable • nice community • http://perldancer.org dams - FOSDEM’11
  • 8. • All about modern Perl • french book • 4 authors (including me) • 450 pages • available here, go buy it ! • http://perlmoderne.fr dams - FOSDEM’11
  • 9. End of Commercials ☹ ☠☢☣ ☹ dams - FOSDEM’11
  • 10. Curses::Toolkit • do you use a Terminal ? • do you know ncurses ? • do you know GTK / QT ? • Curses : perl binding • Curses based Toolkit in Perl, inspired by GTK dams - FOSDEM’11
  • 11. 1. History of Curses::Toolkit dams - FOSDEM’11
  • 12. History • I’ve been doing ncurses based stuff before • some Gentoo Linux app, like profuse • RT::Client::Console for Venda(tm) dams - FOSDEM’11
  • 13.
  • 14.
  • 15. Existing solutions Issues • Curses module on CPAN not good enough • Curses : too low level • Curses::UI : buggy, absolute coordinates, event loop not flexible • Curses::Widget : horrible API, event loop too simple, Widget::Forms too heavy • damned manual hellish coordinates calculation ! dams - FOSDEM’11
  • 16. Curses::Toolkit • a true toolkit, with widgets and events • OO hierarchy. • events : keyboard, mouse, timers, etc • Fully themable • POE based event loop • no damned manual hellish coordinates calculation anymore ! dams - FOSDEM’11
  • 17. 2. Concepts dams - FOSDEM’11
  • 18. Terminal Root window Window Label Widget
  • 19. Widget::Label everything goes through theme the theme screen
  • 20. Root window Window1 Window2 Box Border Button Label
  • 21. Object Hierarchy Curses::Toolkit::Widget | +-- Curses::Toolkit::Widget::Label | +-- Curses::Toolkit::Widget::Entry | +-- Curses::Toolkit::Widget::Scrollbar | | | +-- Curses::Toolkit::Widget::HScrollbar | | | +-- Curses::Toolkit::Widget::VScrollbar | +-- Curses::Toolkit::Widget::Container | +-- Curses::Toolkit::Widget::HBox | +-- Curses::Toolkit::Widget::VBox | +-- Curses::Toolkit::Widget::Paned | | | +-- Curses::Toolkit::Widget::HPaned | | | +-- Curses::Toolkit::Widget::VPaned | +-- Curses::Toolkit::Widget::Bin | +-- Curses::Toolkit::Widget::Border | +-- Curses::Toolkit::Widget::Window | +-- Curses::Toolkit::Widget::Button | +-- Curses::Toolkit::Widget::GenericButton | +-- Curses::Toolkit::Widget::ProgressBar | +-- Curses::Toolkit::Widget::HProgressBar | +-- Curses::Toolkit::Widget::VProgressBar dams - FOSDEM’11
  • 22. Signals • signals can com from • keyboards • mouse • timer • terminal resize • they are sent back and forth to POE • simply use signal_connect( signal => sub { } ) dams - FOSDEM’11
  • 23. Cool stuff • Windows • have animated titles • can be moved / resized (with mouse too) • labels • can wrap, be justified • support tagging (colors, bold...) like GTK • entries • support shortcuts dams - FOSDEM’11
  • 24. 3. Code dams - FOSDEM’11
  • 25. my $root = POE::Component::Curses->spawn; my $window = Curses::Toolkit::Widget::Window->new; my $label = Curses::Toolkit::Widget::Label->new; $root->add_window( $window ); $window->add_widget( $label ); $window->set_coordinates( x1 => 0, y1 => 0, x2 => 40, y2 => 20 ); POE::Kernel->run;
  • 26. POE::Component::Curses->spawn ->add_window( Curses::Toolkit::Widget::Window ->new() ->set_coordinates(x1 => 0, y1 => 0, x2 => 40, y2 => 20) ->add_widget( Curses::Toolkit::Widget::Label ->new() ) ); POE::Kernel->run;
  • 27. DEMO dams - FOSDEM’11
  • 28. Thanks ! • Curses::Toolkit on CPAN • http://damien.krotkine.com/blog • http://github.com/curses-toolkit dams - FOSDEM’11

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n