The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Curses::UI::Volume - Create and manipulate volume widgets.

CLASS HIERARCHY

 Curses::UI::Containter
 Curses::UI::Widget
    |
    +----Curses::UI::ContainerWidget
            |
            +----Curses::UI::Volume

SYNOPSIS

 use Curses::UI;
 my $win = $cui->add('window_id', 'Window');
 my $volume = $win->add(
         'myvolume', 'Curses::UI::Volume',
         -volume => 50,
 );
 $volume->draw;

DESCRIPTION

Curses::UI::Volume is a widget that shows a volume number in graphic form. Precision is 8 stays in one character.

STANDARD OPTIONS

-parent, -x, -y, -width, -height, -pad, -padleft, -padright, -padtop, -padbottom, -ipad, -ipadleft, -ipadright, -ipadtop, -ipadbottom, -title, -titlefullwidth, -titlereverse, -onfocus, -onblur.

For an explanation of these standard options, see Curses::UI::Widget.

REMOVED OPTIONS

-text.

WIDGET-SPECIFIC OPTIONS

  • -bg < COLOR >

     Background color.
     Possible values are defined in Curses::UI::Color.
     Default value is 'black'.
  • -fg < COLOR >

     Foreground color.
     Possible values are defined in Curses::UI::Color.
     Default value is 'white'.
  • -volume < PERCENT_NUMBER >

     If PERCENT_NUMBER is set, text on the label will be drawn as volume level for this percent number.
     Volume number is checked for 0 - 100% value.
     Default value is 0.

STANDARD METHODS

layout, draw, intellidraw, focus, onFocus, onBlur.

For an explanation of these standard methods, see Curses::UI::Widget.

WIDGET-SPECIFIC METHODS

  • new(%parameters)

     Constructor.
     Create widget with volume in graphic form, defined by -volume number.
     Returns object.
  • volume([$volume])

     Get or set volume number.
     In set mode volume number is checked for 0 - 100% value.
     Returns volume number (0-100%).

EXAMPLE1

 use strict;
 use warnings;

 use Curses::UI;

 # Object.
 my $cui = Curses::UI->new;

 # Main window.
 my $win = $cui->add('window_id', 'Window');

 # Add volume.
 $win->add(
         undef, 'Curses::UI::Volume',
         '-volume' => 50,
 );

 # Binding for quit.
 $win->set_binding(\&exit, "\cQ", "\cC");

 # Loop.
 $cui->mainloop;

 # Output like:
 # █▌

EXAMPLE2

 use strict;
 use warnings;

 use Curses::UI;

 # Object.
 my $cui = Curses::UI->new(
         -color_support => 1,
 );

 # Main window.
 my $win = $cui->add('window_id', 'Window');

 # Add volume.
 my $vol = $win->add(
         undef, 'Curses::UI::Volume',
         '-border' => 1,
         '-volume' => 0,
         '-title' => 'foo',
         '-width' => 10,
 );

 # Binding for quit.
 $win->set_binding(\&exit, "\cQ", "\cC");

 # Time.
 $cui->set_timer(
         'timer',
         sub {
                 my $act = $vol->volume;
                 $act += 5;
                 if ($act > 100) {
                         $act = 0;
                 }
                 $vol->volume($act);
                 return;
         },
         1,
 );

 # Loop.
 $cui->mainloop;

 # Output like:
 # ┌ foo ───┐
 # │▊       │
 # └────────┘

DEPENDENCIES

Curses, Curses::UI::Common, Curses::UI::ContainerWidget, Curses::UI::Label, Curses::UI::Widget, Encode, Readonly.

SEE ALSO

Task::Curses::UI

Install the Curses::UI modules.

REPOSITORY

https://github.com/michal-josef-spacek/Curses-UI-Volume

AUTHOR

Michal Josef Špaček mailto:skim@cpan.org

http://skim.cz

LICENSE AND COPYRIGHT

© 2014-2023 Michal Josef Špaček

BSD 2-Clause License

VERSION

0.04