Result:
found more than 394 distributions - search limited to the first 2001 files matching your query ( run in 1.821 )


App-GitHooks

 view release on metacpan or  search on metacpan

lib/App/GitHooks.pm  view on Meta::CPAN

our $VERSION = '1.9.0';


=head1 DESCRIPTION

C<App::GitHooks> is an extensible and easy to configure git hooks framework that supports many plugins.

Here's an example of it in action, running the C<pre-commit> hook checks before
the commit message can be entered:

=begin html

 view all matches for this distribution


App-GitKtti

 view release on metacpan or  search on metacpan

docs/index.html  view on Meta::CPAN

            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        @keyframes float {
            0% { transform: translateY(0px); }
            50% { transform: translateY(-20px); }
            100% { transform: translateY(0px); }
        }

        @keyframes glow {
            0% { box-shadow: 0 0 20px rgba(102, 126, 234, 0.4); }
            50% { box-shadow: 0 0 30px rgba(102, 126, 234, 0.8); }
            100% { box-shadow: 0 0 20px rgba(102, 126, 234, 0.4); }
        }

        @keyframes fadeInUp {
            from {
                opacity: 0;
                transform: translateY(30px);
            }
            to {
                opacity: 1;
                transform: translateY(0);
            }
        }

        @keyframes slideInLeft {
            from {
                opacity: 0;
                transform: translateX(-50px);
            }
            to {
                opacity: 1;
                transform: translateX(0);
            }
        }

        @keyframes slideInRight {
            from {
                opacity: 0;
                transform: translateX(50px);
            }
            to {
                opacity: 1;
                transform: translateX(0);
            }
        }

        @keyframes starfield {
            0% { transform: translateY(0) rotate(0deg); }
            100% { transform: translateY(-100vh) rotate(360deg); }
        }

        body {

docs/index.html  view on Meta::CPAN

        .shooting-star:nth-child(3n) {
            animation-delay: -3s;
            animation-duration: 3.5s;
        }

        @keyframes shootingStar {
            0% {
                opacity: 0;
                transform: translateX(-100px) translateY(50px);
            }
            10% {

docs/index.html  view on Meta::CPAN

                const randomStartY = Math.random() * 100 - 50; // Entre -50px et +50px de variation
                const randomEndY = Math.random() * 300 - 150; // Entre -150px et +150px de variation finale
                
                // Créer une animation CSS personnalisée pour cette étoile
                const animationName = `shootingStar${i}`;
                const keyframes = `
                    @keyframes ${animationName} {
                        0% {
                            opacity: 0;
                            transform: translateX(-100px) translateY(${randomStartY}px);
                        }
                        10% {

docs/index.html  view on Meta::CPAN

                    }
                `;
                
                // Ajouter l'animation personnalisée au document
                const style = document.createElement('style');
                style.textContent = keyframes;
                document.head.appendChild(style);
                
                // Appliquer l'animation personnalisée avec durée aléatoire
                const duration = 3 + Math.random() * 3; // Entre 3 et 6 secondes
                shootingStar.style.animation = `${animationName} ${duration}s linear infinite`;

 view all matches for this distribution


App-Gitc

 view release on metacpan or  search on metacpan

bin/gitc-pass  view on Meta::CPAN

# and waits to be resumed.  Once resumed, verify that the conflict
# was resolved and committed.  If not, let the user try again or
# die.
#
# This code is very similar to code in gitc-promote.  Unfortunately, there
# were enough differences that a common framework couldn't be factored out
# cleanly.
sub let_user_resolve_conflict {
    my ($changeset, $again) = @_;
    if ( not $again ) {
        warn "There were conflicts merging '$changeset' to master.\n";

 view all matches for this distribution


App-Greple-frame

 view release on metacpan or  search on metacpan

lib/App/Greple/frame.pm  view on Meta::CPAN

package App::Greple::frame;

our $VERSION = "1.03";

=encoding utf-8

=head1 NAME

App::Greple::frame - Greple frame output module

=head1 SYNOPSIS

greple -Mframe --frame ...

=head1 DESCRIPTION

Greple -Mframe module provide a capability to put surrounding frames
for each blocks.

C<top>, C<middle> and C<bottom> frames are printed for blocks.

By default B<--join-blocks> option is enabled to collect consecutive
lines into a single block.  If you don't like this, override it by
B<--no-join-blocks> option.

=head1 OPTIONS

=over 7

=item B<--frame>

=for comment
=item B<--frame-fold>

=begin html

<p><img width="75%" src="https://raw.githubusercontent.com/kaz-utashiro/greple-frame/main/images/terminal-3.png">

=end html

Set frame and fold long lines with frame-friendly prefix string.
Folding width is taken from the terminal.  Or you can specify the
width by calling B<set> function with module option.

=begin comment

=item B<--frame-simple>

Set frame without folding.

=end comment

=item B<--frame-cols>

Output results in multi-column format to fit the width of the
terminal.  The number of columns is automatically calculated from the
terminal width.

=item B<--frame-pages>

Output results in multi-column and paginated format.

=begin html

<p><img width="75%" src="https://raw.githubusercontent.com/kaz-utashiro/greple-frame/main/images/terminal-frame-pages.png">

=end html

=item B<--set-frame-width>=I<#>

Set frame width.  You have to put this option before B<--frame>
option.  See B<set> function in L</FUNCTION> section.

=back

=begin comment

Put next line in your F<~/.greplerc> to autoload B<App::Greple::frame> module.

    autoload -Mframe --frame

Then you can use B<--frame> option whenever you want.

=end comment

=head1 FUNCTION

lib/App/Greple/frame.pm  view on Meta::CPAN


=item B<set>(B<width>=I<n>)

Set terminal width to I<n>.  Use like this:

    greple -Mframe::set(width=80) ...

    greple -Mframe::set=width=80 ...

If non-digit character is found in the value part, it is considered as
a Reverse Polish Notation, starting terminal width pushed on the
stack.  RPN C<2/3-> means C<terminal-width / 2 - 3>.

You can use like this:

    greple -Mframe::set=width=2/3- --frame --uc '(\w+::)+\w+' --git | ansicolumn -PC2

=begin html

<p><img width="75%" src="https://raw.githubusercontent.com/kaz-utashiro/greple-frame/main/images/terminal-column.png">

=end html

=back

lib/App/Greple/frame.pm  view on Meta::CPAN


sub finalize {
    ($mod, $argv) = @_;
}

my %frame_base = (
    top    => '      ┌─' ,
    middle => '    ⋮ ├╶' ,
    bottom => '──────┴─' ,
);

sub opt_frame {
    my $pos = shift;
    my $width = $param{width} //= terminal_width;
    local $_ = $frame_base{$pos} or die;
    if ((my $rest = $width - length) > 0) {
	$_ .= (substr($_, -1, 1) x $rest);
    }
    $_;
}

lib/App/Greple/frame.pm  view on Meta::CPAN


__DATA__

mode function

option --set-frame-width  &set(width=$<shift>)
option --set-frame-column &set(column=$<shift>)

option --ansifold-with-width \
       --pf "ansifold --expand --discard=EL --padding --prefix '      │ ' $<shift> --width=$<shift>"

option --ansifold \
       --ansifold-with-width &get(fold,width)

option --frame-color-filename \
       --colormap FILE=555/CE --format FILE=' %s'

option --frame-simple \
       --line-number --join-blocks \
       --filestyle=once \
       --colormap LINE= --format LINE='%5d │ ' \
       --blockend= \
       --show-frame-middle

option --show-frame-top    --frame_top    &opt_frame(top)
option --show-frame-middle --frame_middle &opt_frame(middle)
option --show-frame-bottom --frame_bottom &opt_frame(bottom)

option --frame-plain --frame-color-filename --frame-simple
option --frame-fold  --frame-plain --ansifold
option --frame       --frame-fold

option --frame-classic-plain --frame-simple --show-frame-top --show-frame-bottom
option --frame-classic-fold  --frame-classic-plain --ansifold
option --frame-classic       --frame-classic-fold

##
## EXPERIMENTAL: --frame-pages, --frame-cols
##

# RPN
define @TEXT_WIDTH  $ENV{GREPLE_FRAME_PAGES_WIDTH}
define @MARGIN      $ENV{GREPLE_FRAME_PAGES_MARGIN}

lib/App/Greple/frame.pm  view on Meta::CPAN

       ansicolumn --border=box -U @COLUMN

define $PAGES \
       ansicolumn --border=box -P -C @COLUMN

option --frame-set-params \
       &set(width=@WIDTH)

option --frame-col \
       --frame-set-params \
       --pf "$FOLD" \
       --frame-plain

option --frame-pages \
       --frame-set-params \
       --pf "$FOLD | $PAGES" \
       --frame-plain

option --frame-cols \
       --frame-set-params \
       --pf "$FOLD | $COLS" \
       --frame-plain

option --frame-columns --frame-cols

option --frame-pages-classic \
       --frame-set-params \
       --pf "$FOLD | $PAGES" \
       --frame-classic-plain

 view all matches for this distribution


App-Greple-subst

 view release on metacpan or  search on metacpan

share/jtca-katakana-guide-3.pl  view on Meta::CPAN

キャプチャー capture 1-3
キャラクター character 1-1
キャラバン caravan 3
キャリブレーション calibration 1-2、4-1
キー key 1-1
キーフレーム keyframe 1-4
キーボード keyboard 1-4
キーワード keyword 1-4
ギア gear 1-1例外
クァルテット quartet 2-2例外
クアトロ cuatro(スペイン語) 2-2

share/jtca-katakana-guide-3.pl  view on Meta::CPAN

フリッカー flicker 1-1
フリーウェア freeware 1-3、1-4、2-1
フリーハンド freehand 1-4
フリーランサー freelancer 1-1、1-4
フル full 1-1
フレーム frame 1-2
フロッピー floppy 1-1
ブラウザー browser 1-1
プライバシー privacy 1-1、3
プライベート private 3
プライマリー primary 1-1

 view all matches for this distribution


App-Greple-wordle

 view release on metacpan or  search on metacpan

lib/App/Greple/wordle/NYT.pm  view on Meta::CPAN

foils foins foist folds foley folia folic folie folio folks folky folly fomes 
fonda fonds fondu fones fonio fonly fonts foods foody fools foots footy foram 
foray forbs forby force fordo fords forel fores forex forge forgo forks forky 
forma forme forms forte forth forts forty forum forza forze fossa fosse fouat 
fouds fouer fouet foule fouls found fount fours fouth fovea fowls fowth foxed 
foxes foxie foyer foyle foyne frabs frack fract frags frail fraim frais frame 
franc frank frape fraps frass frate frati frats fraud fraus frays freak freed 
freer frees freet freit fremd frena freon frere fresh frets friar fribs fried 
frier fries frigs frill frise frisk frist frita frite frith frits fritt fritz 
frize frizz frock froes frogs fromm frond frons front froom frore frorn frory 
frosh frost froth frown frows frowy froyo froze frugs fruit frump frush frust 

lib/App/Greple/wordle/NYT.pm  view on Meta::CPAN

usher epoch triad break rhino viral conic masse sonic vital trace using peach 
champ baton brake pluck craze gripe weary picky acute ferry aside tapir troll 
unify rebus boost truss siege tiger banal slump crank gorge query drink favor 
abbey tangy panic solar shire proxy point robot prick wince crimp knoll sugar 
whack mount perky could wrung light those moist shard pleat aloft skill elder 
frame humor pause ulcer ultra robin cynic aroma caulk shake dodge swill tacit 
other thorn trove bloke vivid spill chant choke rupee nasty mourn ahead brine 
cloth hoard sweet month lapse watch today focus smelt tease cater movie saute 
allow renew their slosh purge chest depot epoxy nymph found shall stove lowly 
snout trope fewer shawl natal comma foray scare stair black squad royal chunk 
mince shame cheek ample flair foyer cargo oxide plant olive inert askew heist 

 view all matches for this distribution


App-Greple

 view release on metacpan or  search on metacpan

README.md  view on Meta::CPAN

      --filestyle=style    how filenames are printed (once, separate, line)
      --linestyle=style    how line numbers are printed (separate, line)
      --blockstyle=style   how block numbers are printed (separate, line)
      --separate           set filestyle, linestyle, blockstyle "separate"
      --format LABEL=...   define the format for line number and file name
      --frame-top          top frame line
      --frame-middle       middle frame line
      --frame-bottom       bottom frame line
    FILE
      --glob=glob          glob target files
      --chdir=dir          change directory before search
      --readlist           get filenames from stdin
    COLOR

README.md  view on Meta::CPAN


    Next example will show line numbers in five digits with tab space:

        --format LINE='%05d\t'

- **--frame-top**=_string_
- **--frame-middle**=_string_
- **--frame-bottom**=_string_

    Print surrounding frames before and after each block.  `top` frame is
    printed at the beginning, `bottom` frame at the end, `middle` frame
    between blocks.

**Related options:**
**--block**/**-p** (["BLOCKS"](#blocks)),
**--color**/**--colormap** (["COLORS"](#colors))

 view all matches for this distribution


App-Guiio

 view release on metacpan or  search on metacpan

lib/App/Guiio/stripes/editable_box2.pm  view on Meta::CPAN

	{
	$title_width  = max($title_width, length($title_line)) ;
	push @title_lines, $title_line ;
	}

my ($extra_width, $extra_height) = get_box_frame_size_overhead($box_type) ;

my $display_title = (defined $title_text and $title_text ne '') ? 1 : 0 ;
$text_width  = max($text_width, $title_width)  if $display_title;

#if($auto_shrink)

lib/App/Guiio/stripes/editable_box2.pm  view on Meta::CPAN

#	}

$end_x = max($end_x, $text_width + $extra_width, $title_width + $extra_width) ;
$end_y = max($end_y, scalar(@lines) + $extra_height + scalar(@title_lines)) ;

my ($box_top, $box_left, $box_right, $box_bottom, $title_separator, $title_left, $title_right) = get_box_frame_elements($box_type, $end_x) ;

my $text = $box_top ;

for my $title_line (@title_lines)
	{

lib/App/Guiio/stripes/editable_box2.pm  view on Meta::CPAN

Readonly my  $NAME => 1 ;
Readonly my  $LEFT => 2 ;
Readonly my  $BODY => 3 ;
Readonly my  $RIGHT => 4 ;

sub get_box_frame_size_overhead
{
my ($box_type) = @_ ;

my @displayed_elements = grep { $_->[$DISPLAY] } @{$box_type} ;
my $extra_width = max(0, map {length} map {$_->[$LEFT]}@displayed_elements)

lib/App/Guiio/stripes/editable_box2.pm  view on Meta::CPAN

	}

return($extra_width, $extra_height) ;
}

sub get_box_frame_elements
{
my ($box_type, $width) = @_ ;

my ($box_top, $box_left, $box_right, $box_bottom, $title_separator, $title_left, $title_right) = map {''} (1 .. 7) ;

 view all matches for this distribution


App-HistHub

 view release on metacpan or  search on metacpan

inc/Spiffy.pm  view on Meta::CPAN

our @EXPORT = ();
our @EXPORT_BASE = qw(field const stub super);
our @EXPORT_OK = (@EXPORT_BASE, qw(id WWW XXX YYY ZZZ));
our %EXPORT_TAGS = (XXX => [qw(WWW XXX YYY ZZZ)]);

my $stack_frame = 0; 
my $dump = 'yaml';
my $bases_map = {};

sub WWW; sub XXX; sub YYY; sub ZZZ;

inc/Spiffy.pm  view on Meta::CPAN

          unless grep /^XXX$/, @EXPORT_BASE;
    }

    spiffy_filter() 
      if ($args->{-selfless} or $args->{-Base}) and 
         not $filtered_files->{(caller($stack_frame))[1]}++;

    my $caller_package = $args->{-package} || caller($stack_frame);
    push @{"$caller_package\::ISA"}, $self_package
      if $args->{-Base} or $args->{-base};

    for my $class (@{all_my_bases($self_package)}) {
        next unless $class->isa('Spiffy');

inc/Spiffy.pm  view on Meta::CPAN

}

package Spiffy;
sub super {
    my $method;
    my $frame = 1;
    while ($method = (caller($frame++))[3]) {
        $method =~ s/.*::// and last;
    }
    my @args = DB::super_args($frame);
    @_ = @_ ? ($args[0], @_) : @args;
    my $class = ref $_[0] ? ref $_[0] : $_[0];
    my $caller_class = caller;
    my $seen = 0;
    my @super_classes = reverse grep {

inc/Spiffy.pm  view on Meta::CPAN

    for my $base_class (@base_classes) {
        next if $inheritor->isa($base_class);
        croak "Can't mix Spiffy and non-Spiffy classes in 'use base'.\n", 
              "See the documentation of Spiffy.pm for details\n  "
          unless $base_class->isa('Spiffy');
        $stack_frame = 1; # tell import to use different caller
        import($base_class, '-base');
        $stack_frame = 0;
    }
}

sub mixin {
    my $self = shift;

 view all matches for this distribution


App-I18N

 view release on metacpan or  search on metacpan

lib/App/I18N.pm  view on Meta::CPAN


I18N management utility, provides an command-line interface to parse /
translate / update mo file i18n messages.

App::I18N borrows some good stuff from L<Jifty::I18N> and L<Jifty::Script::Po>
and tries to provide a general po management script for all frameworks |
applications.

=head1 USAGE

=head2 Basic flow

 view all matches for this distribution


App-Ikachan

 view release on metacpan or  search on metacpan

bin/ikachan  view on Meta::CPAN

            ikachan
            <img src="data:image/png;base64,${logo}" />
        </h1>

        <h2>join channel list</h2>
        <iframe src="/channel_list"></iframe>

        <h2>API usage</u2>

        <h3>channel join</h3>
        <section>

bin/ikachan  view on Meta::CPAN

.btn-mini .label,
.btn-mini .badge {
  top: 0;
}

@-webkit-keyframes progress-bar-stripes {
  from {
    background-position: 40px 0;
  }
  to {
    background-position: 0 0;
  }
}

@-moz-keyframes progress-bar-stripes {
  from {
    background-position: 40px 0;
  }
  to {
    background-position: 0 0;
  }
}

@-ms-keyframes progress-bar-stripes {
  from {
    background-position: 40px 0;
  }
  to {
    background-position: 0 0;
  }
}

@-o-keyframes progress-bar-stripes {
  from {
    background-position: 0 0;
  }
  to {
    background-position: 40px 0;
  }
}

@keyframes progress-bar-stripes {
  from {
    background-position: 40px 0;
  }
  to {
    background-position: 0 0;

 view all matches for this distribution


App-Ikaros

 view release on metacpan or  search on metacpan

lib/App/Ikaros.pm  view on Meta::CPAN


__END__

=head1 NAME

App::Ikaros - distributed testing framework for jenkins

=head1 SYNOPSIS

=head3  [EXECUTOR]

lib/App/Ikaros.pm  view on Meta::CPAN

          runner: prove # override executor of main command
          workdir: $HOME/ikaros_workspace_3

=head1 DESCRIPTION

App::Ikaros is distributed testing framework for jenkins.

=head1 METHODS

=head1 AUTHOR

 view all matches for this distribution


App-Install

 view release on metacpan or  search on metacpan

lib/App/Install.pm  view on Meta::CPAN

    minimvc-install

Each of these scripts comes packaged with its respective distro
(Module::Starter, Catalyst::Helper, Kwiki, and MasonX::MiniMVC
respectively) and is used to install an application or create a
framework, stub, or starting point for your own application.

If you're not familiar with any of those modules and their installers,
imagine a theoretical module Foo::Bar, providing some kind of CGI
application,  which comes with a foo-install script.  When you run
foo-install, it creates a directory structure like this:

 view all matches for this distribution


App-InvestSim

 view release on metacpan or  search on metacpan

lib/App/InvestSim/GUI.pm  view on Meta::CPAN

my ($total_rent_text, $rent_cap_text, $pinel_worth_text, $notary_fees_text, $total_invested_text);

# How to format the various modes of the drop-down menu.
my @modes_format;

# Add in the given frame in column 0 and 1 a label and an entry text box in the
# given row that is incremented ($row is a ref to a scalar).
sub add_input_entry {
  my ($frame, $row, $key, $text, $format, $tooltip) = @_;
  my (undef, $validate) = @{$values_config{$key}};
  my $var_ref = \$values{$key};
  $frame->new_ttk__label(-text => "${text} :")
    ->g_grid(-column => 0, -row => $$row, -sticky => "e", -padx => "0 2");
  my $e = $frame->new_ttk__entry(-width => ENTRY_WIDTH);
    $e->g_grid(-column => 1, -row => $$row++, -sticky => "we", -pady => 2);
  setup_entry($e, $var_ref, $format, $validate);
  if ($tooltip) {
    local $Text::Wrap::columns = 50;
    $e->g_tooltip__tooltip(Text::Wrap::fill('', '', $tooltip)); 

lib/App/InvestSim/GUI.pm  view on Meta::CPAN

  Tkx::font('configure', $treeview_total_font, Tkx::SplitList(Tkx::font('configure', $default_treeview_font)));
  Tkx::font('configure', $treeview_total_font, -weight => 'bold');
  
  # Build the left bar with various parameters.
  {
    my $frame = $root->new_ttk__frame(-padding => 3);
    $frame->g_grid(-column => 0, -row => 0, -rowspan => 3, -sticky => "we");
    
    my $row = 0;
    for my $c (['invested', "Valeur du bien", \&format_euro, "Prix d'achat du bien, hors frais de notaire."],
               ['tax_rate', "Taux d'imposition marginal", \&format_percent],
               ['base_rent', "Loyer brut initial", \&format_euro],

lib/App/InvestSim/GUI.pm  view on Meta::CPAN

               ['duration', "Durée d'investissement", \&format_year],
               ['notary_fees', "Frais de notaire", \&format_percent],
               ['loan_insurance', "Assurance décès du prêt", \&format_percent],
               ['other_rate', "Taux de placement autre", \&format_percent],
               ['surface', "Superficie (pondérée)", \&format_surface, "Surface totale habitable, additionnée, le cas échéant, de la moitié des surfaces annexes dans la limite de 8m² (utilisée seulement pour l'application des plafonds 'Pinel')."]) {
      add_input_entry($frame, \$row, @$c);
    }
  }

  # Build the top bar with the loan duration and rate values.
  my @loan_duration_texts;  # Re-used in the core data table.
  {
    my $frame = $root->new_ttk__frame(-padding => 3);
    $frame->g_grid(-column => 1, -row => 0, -sticky => "nwes");
    $frame->g_grid_columnconfigure(0, -weight => 1); 
      
    $frame->new_ttk__label(-text => "Durée d'emprunt (années)")
      ->g_grid(-column => 0, -row => 0, -sticky => "e");
    $frame->new_ttk__label(-text => "Taux d'emprunt")
      ->g_grid(-column => 0, -row => 1, -sticky => "e");
    my $loan_durations = $values{loan_durations};
    my $validate_duration = $values_config{loan_durations}[1];
    my $loan_rates = $values{loan_rates};
    my $validate_rate = $values_config{loan_rates}[1];
    for my $i (0..NUM_LOAN_DURATION-1) {
      my $d = $frame->new_ttk__entry(-width => ENTRY_WIDTH);
      $d->g_grid(-column => $i + 1, -row => 0, -sticky => "we");
      setup_entry($d, \$loan_durations->[$i], \&format_year, $validate_duration, \$loan_duration_texts[$i]);
      my $r = $frame->new_ttk__entry(-width => ENTRY_WIDTH);
      $r->g_grid(-column => $i + 1, -row => 1, -sticky => "we");
      setup_entry($r, \$loan_rates->[$i], \&format_percent, $validate_rate);
    }
  }

  # Build the combo-box with the list of possible values, in its own frame.
  my @modes;
  $modes[MONTHLY_PAYMENT] = "Mensualité de l'emprunt (assurance comprise)";
  $modes_format[MONTHLY_PAYMENT] = \&format_euro;
  $modes[LOAN_COST] = "Cout total de l'emprunt (assurance comprise)";
  $modes_format[LOAN_COST] = \&format_euro;

lib/App/InvestSim/GUI.pm  view on Meta::CPAN

  $modes[NET_GAIN] = "Gain Net de l'opération";
  $modes_format[NET_GAIN] = \&format_euro;
  $modes[INVESTMENT_RETURN] = "Rendement de l'opération";
  $modes_format[INVESTMENT_RETURN] = \&format_percent;
  {
    my $frame = $root->new_ttk__frame(-padding => 5);
    $frame->g_grid(-column => 1, -row => 1, -sticky => "nwes");
    $frame->g_grid_columnconfigure(0, -weight => 1); # So that it extends to the whole width.

    $modes_combobox = $frame->new_ttk__combobox(-state => 'readonly', -values => \@modes, -justify => 'center');
    $modes_combobox->g_grid(-column => 0, -row => 0, -sticky => "we");
    $modes_combobox->m_current(MONTHLY_PAYMENT);
    $modes_combobox->g_bind('<<ComboboxSelected>>', \&update_displayed_mode);
  }

  # Build the core table with the computation output.
  {
    my $frame = $root->new_ttk__frame(-padding => 3);
    $frame->g_grid(-column => 1, -row => 2, -sticky => "nwes");
     # So that it extends to the same width as column 0 of the top bar. All other
     # columns have a fixed width that is the same as the matching column in the
     # top bar.
    $frame->g_grid_columnconfigure(0, -weight => 1);

    $frame->new_ttk__label(-text => 'Emprunt \ Durée')
      ->g_grid(-column => 0, -row => 0);
    for my $i (0..NUM_LOAN_DURATION-1) {
      $frame->new_ttk__entry(-width => ENTRY_WIDTH, -textvariable => \$loan_duration_texts[$i], -state => 'readonly', -takefocus => 0)
        ->g_grid(-column => $i + 1, -row => 0, -sticky => "we");
    }
    my $loan_amounts = $values{loan_amounts};
    my $validate_amount = $values_config{loan_amounts}[1];
    for my $j (0..NUM_LOAN_AMOUNT-1) {
      my $w = $frame->new_ttk__entry(-width => ENTRY_WIDTH, -justify => 'right');
      $w->g_grid(-column => 0, -row => $j + 1, -sticky => "we");
      setup_entry($w, \$loan_amounts->[$j], \&format_euro, $validate_amount);
    }
    for my $i (0..NUM_LOAN_DURATION-1) {
      for my $j (0..NUM_LOAN_AMOUNT-1) {
        my $e = $frame->new_ttk__entry(-width => ENTRY_WIDTH, -textvariable => \$core_display_values[$i][$j],
                                       -state => 'readonly', -justify => 'right', -takefocus => 0,
                                       -style => 'DataTable.TEntry');
        $e->g_grid(-column => $i + 1, -row => $j + 1, -sticky => "we");
        $e->g_bind('<FocusIn>', sub { set_core_table_selected_state($e);
                                      update_displayed_table($i, $j) });

lib/App/InvestSim/GUI.pm  view on Meta::CPAN

  }

  # Build the right bar with some other input values and the output values not 
  # depending on the loan parameters.
  {
    my $frame = $root->new_ttk__frame(-padding => 3);
    $frame->g_grid(-column => 2, -row => 0, -rowspan => 3, -sticky => "we");
    
    my $row = 0;
    
    for my $c (['rent_delay', "Delai de mise en location", \&format_year],
               ['loan_delay', "Durée de franchise de l'emprunt", \&format_year],
               ['application_fees', "Frais de dossier du prêt", \&format_euro],
               ['mortgage_fees', "Frais d'hypothèque", \&format_percent],
               ['social_tax', "CSG + CRDS + Solidarité", \&format_percent]) {
      add_input_entry($frame, \$row, @$c);
    }
    
    # Just some empty white-space between the inputs and the output fields.
    $frame->g_grid_rowconfigure($row++, -minsize => 10);
    
    $frame->new_ttk__label(-text => "Revenus total du loyer (net) :")
      ->g_grid(-column => 0, -row => $row, -sticky => "e", -padx => "0 2");
    $frame->new_ttk__entry(-width => ENTRY_WIDTH, -state => 'readonly', -textvariable => \$total_rent_text, -takefocus => 0)
      ->g_grid(-column => 1, -row => $row++, -sticky => "we", -pady => 2);

    $frame->new_ttk__label(-text => "Plafond du loyer :")
      ->g_grid(-column => 0, -row => $row, -sticky => "e", -padx => "0 2");
    ($rent_cap_entry = $frame->new_ttk__entry(-width => ENTRY_WIDTH, -state => 'readonly', -textvariable => \$rent_cap_text, -takefocus => 0))
      ->g_grid(-column => 1, -row => $row++, -sticky => "we", -pady => 2);

      $frame->new_ttk__label(-text => "Valeur déductible du bien :")
      ->g_grid(-column => 0, -row => $row, -sticky => "e", -padx => "0 2");
    $frame->new_ttk__entry(-width => ENTRY_WIDTH, -state => 'readonly', -textvariable => \$pinel_worth_text, -takefocus => 0)
      ->g_grid(-column => 1, -row => $row++, -sticky => "we", -pady => 2);

    $frame->new_ttk__label(-text => "Frais de notaire :")
      ->g_grid(-column => 0, -row => $row, -sticky => "e", -padx => "0 2");
    $frame->new_ttk__entry(-width => ENTRY_WIDTH, -state => 'readonly', -textvariable => \$notary_fees_text, -takefocus => 0)
      ->g_grid(-column => 1, -row => $row++, -sticky => "we", -pady => 2);

      $frame->new_ttk__label(-text => "Montant total investi :")
      ->g_grid(-column => 0, -row => $row, -sticky => "e", -padx => "0 2");
    $frame->new_ttk__entry(-width => ENTRY_WIDTH, -state => 'readonly', -textvariable => \$total_invested_text, -takefocus => 0)
      ->g_grid(-column => 1, -row => $row++, -sticky => "we", -pady => 2);
  }

  # Build the bottom table.
  $root->g_grid_columnconfigure(1, -weight => 1);
  $root->g_grid_rowconfigure(3, -weight => 1);
  {
    my $frame = $root->new_ttk__frame(-padding => 3, -height => 550);
    $frame->g_grid_propagate(0);
    $frame->g_grid(-column => 0, -row => 3, -columnspan => 3, -sticky => "nwes");
    $frame->g_grid_columnconfigure(0, -weight => 1);
    $frame->g_grid_rowconfigure(0, -weight => 1);
    $display_table = $frame->new_ttk__treeview(-height => ($values{duration} // 20) + 2);
    $display_table->g_grid(-column => 0, -row => 0, -rowspan => 2, -sticky => "nwes");
    
    # We're setting a specific font for items with the tag 'total'.
    $display_table->m_tag('configure', 'total', -font => $treeview_total_font);
    
    #my $hscroll = $frame->new_tk__scrollbar(-orient => "horizontal", -command => [$display_table, "xview"]);
    #$hscroll->g_grid(-column => 0, -row => 1, -sticky => "we");
    my $vscroll = $frame->new_ttk__scrollbar(-orient => "vertical", -command => [$display_table, "yview"]);
    $vscroll->g_grid(-column => 1, -row => 0, -sticky => "ns");
    $frame->new_ttk__sizegrip()->g_grid(-column => 1, -row => 1, -sticky => "se");
    $display_table->configure(-yscrollcommand => [$vscroll, "set"]);
    #$display_table->configure(-xscrollcommand => [$hscroll, "set"]);
    
    my @headings = ('Année', 'Loyer net', 'Placements', 'Principal du prêt', 'Intérêts du prêt', 'Frais du prêt', 'Revenus imposable', 'Déficit déductible', 'Impôt', 'Solde annuel', 'Capital');
    # We're not using the name of the columns (c1, c2, ...) we're only using their

lib/App/InvestSim/GUI.pm  view on Meta::CPAN

  clear_displayed_table();
  # We don't configure the height of the table unconditionnally because doing so
  # will slightly change the width of the widget for some weird reason. Forcing
  # the width does not work well (and yield some ugly redraw), so we don't do it.
  # All this is unused anyway now that we have verticall scrolling and a set size
  # for the enclosing frame.
  my $current_height = (Tkx::SplitList($display_table->m_configure('-height')))[-1];
  $display_table->m_configure(-height => $values{duration} || 1) if $values{duration} != $current_height;
  my $table = $computed_values[$d][$a][TABLE_DATA];
  for my $i (0..$#$table) {
    my $text = $i ? $i : 'Achat';

 view all matches for this distribution


App-JobLog

 view release on metacpan or  search on metacpan

lib/App/JobLog/TimeGrammar.pm  view on Meta::CPAN

=head1 DESCRIPTION

C<App::JobLog::TimeGrammar> converts natural language time expressions into pairs of
C<DateTime> objects representing intervals. This requires disambiguating ambiguous
terms such as 'yesterday', whose interpretation varies from day to day, and 'Friday', whose
interpretation must be fixed by some frame of reference. The heuristic used by this code
is to look first for a fixed date, either a fully specified date such as 2011/2/17 or
one fixed relative to the current moment such as 'now'. If such a date is present in the time
expression it determines the context for the other date, if it is present. Otherwise
it is assumed that the closest appropriate pair of dates immediately before the current
moment are intended.

 view all matches for this distribution


App-KGB

 view release on metacpan or  search on metacpan

eg/kgb-client.conf.sample  view on Meta::CPAN

   timeout: 5 # no point in waiting longer for localhost
 - uri: http://remotehost:9999/
   password: "overrides the global one"
# status-dir is used to store the last successfully contacted server
# this information is used later in order to try to contact the same server
# again (if later contact is within some not very big time frame)
status-dir: /var/cache/kgb/client-status
# a commit URL template to send to the server
# ${module}, ${branch} and ${commit} are replaced with the data from the commit
# Examples:
#  "http://svn.debian.org/viewvc/kgb?view=revision&revision=${commit}"

 view all matches for this distribution


App-Kritika

 view release on metacpan or  search on metacpan

kritika.fatpack  view on Meta::CPAN

$fatpacked{"Test/Fatal.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'TEST_FATAL';
  use strict;use warnings;package Test::Fatal;$Test::Fatal::VERSION='0.05';use Carp ();use Try::Tiny 0.07;use Exporter 5.57 'import';our@EXPORT=qw(exception);our@EXPORT_OK=qw(exception success dies_ok lives_ok);our ($REAL_TBL,$REAL_CALCULATED_TBL)=(1...
TEST_FATAL

$fatpacked{"Test/MonkeyMock.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'TEST_MONKEYMOCK';
  package Test::MonkeyMock;use strict;use warnings;require Carp;our$VERSION='0.05';my$registry={};my$magic_counter=0;sub new {my$class=shift;$class=ref$class if ref$class;my ($instance)=@_;my$new_package;if ($instance){$new_package=__PACKAGE__ .'::' ...
TEST_MONKEYMOCK

$fatpacked{"Test/TempDir/Tiny.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'TEST_TEMPDIR_TINY';
  use 5.006002;use strict;use warnings;package Test::TempDir::Tiny;our$VERSION='0.05';use Exporter 5.57 qw/import/;our@EXPORT=qw/tempdir in_tempdir/;use Carp qw/confess/;use Cwd qw/abs_path/;use Errno qw/EEXIST ENOENT/;{no warnings 'numeric';use File...
TEST_TEMPDIR_TINY

 view all matches for this distribution


App-LXC-Container

 view release on metacpan or  search on metacpan

lib/App/LXC/Container.pm  view on Meta::CPAN


=head1 KNOWN BUGS

Currently the package only supports Debian based distributions.  If you're
using something different please get in touch to extend the support.  (The
framework is already there, but the specific commands are missing, and
that's where I need some help.)  Everything derived from Debian should be
easy to add.  For RPM based distributions I've also already some ideas.

Also only X11 graphic and pulseaudio/pipewire sound has been tested so far.
Wayland probably works as well but other sound systems most surely not.

 view all matches for this distribution


App-MFILE-WWW

 view release on metacpan or  search on metacpan

lib/App/MFILE/WWW.pm  view on Meta::CPAN




=head1 DESCRIPTION

This distro contains a foundation/framework/toolkit for developing the "front
end" portion of web applications. 

L<App::MFILE::WWW> is a L<Plack> application that provides a HTTP
request-response handler (based on L<Web::Machine>), CSS and HTML source code
for an in-browser "screen", and JavaScript code for displaying various

 view all matches for this distribution


App-MHFS

 view release on metacpan or  search on metacpan

lib/MHFS/Plugin/GetVideo.pm  view on Meta::CPAN

            return ['ffmpeg', '-i', $video->{"src_file"}{"filepath"}, '-f', 'mpegts', '-codec:v', 'mpeg1video', '-codec:a', 'mp2', '-b', '0',  $video->{"out_filepath"}];
        }, 'ext' => 'ts', 'player_html' => $settings->{'DOCUMENTROOT'} . '/static/jsmpeg_player.html', 'minsize' => '1048576'},

        'mp4' => {'lock' => 1, 'create_cmd' => sub {
            my ($video) = @_;
            return ['ffmpeg', '-i', $video->{"src_file"}{"filepath"}, '-c:v', 'copy', '-c:a', 'aac', '-f', 'mp4', '-movflags', 'frag_keyframe+empty_moov', $video->{"out_filepath"}];
        }, 'ext' => 'mp4', 'player_html' => $settings->{'DOCUMENTROOT'} . '/static/mp4_player.html', 'minsize' => '1048576'},

        'noconv' => {'lock' => 0, 'ext' => '', 'player_html' => $settings->{'DOCUMENTROOT'} . '/static/noconv_player.html', },

        'mkvinfo' => {'lock' => 0, 'ext' => ''},

lib/MHFS/Plugin/GetVideo.pm  view on Meta::CPAN

    my @command = ('ffmpeg', '-loglevel', 'fatal');
    if($request->{'qs'}{'fmp4_time'}) {
        my $formattedtime = hls_audio_formattime($request->{'qs'}{'fmp4_time'});
        push @command, ('-ss', $formattedtime);
    }
    push @command, ('-i', $fileabspath, '-c:v', 'copy', '-c:a', 'aac', '-f', 'mp4', '-movflags', 'frag_keyframe+empty_moov', '-');
    my $evp = $request->{'client'}{'server'}{'evp'};
    my $sent;
    print "$_ " foreach @command;
    $request->{'outheaders'}{'Accept-Ranges'} = 'none';

lib/MHFS/Plugin/GetVideo.pm  view on Meta::CPAN

    }
    my $rawts = substr($data, 0, 2, '');
    my $rawflag = substr($data, 0, 1, '');

    my $lacing = unpack('C', $rawflag) & 0x6;
    my $framecnt;
    my @sizes;
    # XIPH
    if($lacing == 0x2) {
        $framecnt = unpack('C', substr($data, 0, 1, ''))+1;
        my $firstframessize = 0;
        for(my $i = 0; $i < ($framecnt-1); $i++) {
            my $fsize = 0;
            while(1) {
                my $val = unpack('C', substr($data, 0, 1, ''));
                $fsize += $val;
                last if($val < 255);
            }
            push @sizes, $fsize;
            $firstframessize += $fsize;
        }
        push @sizes, (length($data) - $firstframessize);
    }
    # EBML
    elsif($lacing == 0x6) {
        $framecnt = unpack('C', substr($data, 0, 1, ''))+1;
        my $last = read_and_parse_vint_from_buf(\$data);
        push @sizes, $last;
        my $sum = $last;
        for(my $i = 0; $i < ($framecnt - 2); $i++) {
            my $width;
            my $offset = read_and_parse_vint_from_buf(\$data, \$width);
            # multiple by 2^bitwidth - 1 (with adjusted bitwidth)
            my $desiredbits = (8 * $width) - ($width+1);
            my $subtract = (1 << $desiredbits) - 1;

lib/MHFS/Plugin/GetVideo.pm  view on Meta::CPAN

        say "lastlast $lastlast";
        push @sizes, $lastlast;
    }
    # fixed
    elsif($lacing == 0x4) {
        $framecnt = unpack('C', substr($data, 0, 1, ''))+1;
        my $framesize = length($data) / $framecnt;
        for(my $i = 0; $i < $framecnt; $i++) {
            push @sizes, $framesize;
        }
    }
    # no lacing
    else {
        push @sizes, length($data);

lib/MHFS/Plugin/GetVideo.pm  view on Meta::CPAN


    return {
        'trackno' => $trackno,
        'rawts' => $rawts,
        'rawflag'  => $rawflag,
        'frame_lengths' => \@sizes,
        'data' => $data,
        'ts' => unpack('s>', $rawts)
    };
}

lib/MHFS/Plugin/GetVideo.pm  view on Meta::CPAN

    if(scalar(@tracks) == 0) {
        return undef;
    }

    my $segmentelm = $ebml->{'elements'}[0];
    my %matroska = ('ebml' => $ebml, 'tsscale' => $tsval, 'rawduration' => $scaledduration, 'duration' => $duration, 'tracks' => \@tracks, 'segment_data_start' => {'size' => $segmentelm->{'size'}, 'id' => $segmentelm->{'id'}, 'fileoffset' => tell($eb...
    return \%matroska;
}

sub matroska_get_audio_track {
    my ($matroska) = @_;

lib/MHFS/Plugin/GetVideo.pm  view on Meta::CPAN

    return undef;
}

sub matroska_ts_to_sample  {
    my ($matroska, $samplerate, $ts) = @_;
    my $curframe = int(($ts * $samplerate / 1000000000)+ 0.5);
    return $curframe;
}

sub matroska_get_gop {
    my ($matroska, $track, $timeinseconds) = @_;
    my $tid = $track->{&EBMLID_TrackNumber}{'value'};

lib/MHFS/Plugin/GetVideo.pm  view on Meta::CPAN

            next;
        }

        $prevcluster = undef;

        my $blockduration = ((1/24) * scalar(@{$block->{'frame_lengths'}}));
        if($timeinseconds < ($blocktime +  $blockduration)) {
            say 'got GOP at ' . $matroska->{'dc'}{'firstblk'};
            return {'goptime' => $matroska->{'dc'}{'firstblk'}};
            last;
        }

lib/MHFS/Plugin/GetVideo.pm  view on Meta::CPAN

}

sub matroska_seek_track {
    my ($matroska, $track, $pcmFrameIndex) = @_;
    my $tid = $track->{&EBMLID_TrackNumber}{'value'};
    $matroska->{'curframe'} = 0;
    $matroska->{'curpaks'} = [];
    my $samplerate = $track->{&EBMLID_AudioSampleRate};
    my $pcmFrameLen = $track->{'PCMFrameLength'};
    if(!$pcmFrameLen) {
        warn("Unknown codec");

lib/MHFS/Plugin/GetVideo.pm  view on Meta::CPAN

    my $prevcluster;
    my $desiredcluster;
    while(1) {
        my $cluster = matroska_read_cluster_metadata($matroska);
        last if(!$cluster);
        my $curframe = matroska_ts_to_sample($matroska, $samplerate, $cluster->{'ts'});
        #$curframe = int(($curframe/$pcmFrameLen)+0.5)*$pcmFrameLen; # requires revert cluster
        $curframe = ceil_div($curframe, $pcmFrameLen) * $pcmFrameLen;

        # this cluster could contain our frame, save it's info
        if($curframe <= $pcmFrameIndex) {
            $prevcluster = $desiredcluster;
            $desiredcluster = $cluster;
            $desiredcluster->{'frameIndex'} = $curframe;
            if($prevcluster) {
                $prevcluster->{'prevcluster'} = undef;
                $desiredcluster->{'prevcluster'} = $prevcluster;
            }
        }
        # this cluster is at or past the frame, breakout
        if($curframe >= $pcmFrameIndex){
            last;
        }
    }
    say "before dc check";
    return undef if(! $desiredcluster);

lib/MHFS/Plugin/GetVideo.pm  view on Meta::CPAN

    ebml_set_cluster($ebml, $desiredcluster);
    $matroska->{'dc'} = $desiredcluster;

    # find a valid track block that includes pcmFrameIndex;
    my $block;
    my $blockframe;
    while(1) {
        $block = matroska_get_track_block($matroska, $tid);
        if($block) {
            $blockframe = matroska_block_calc_frame($matroska, $block, $samplerate, $pcmFrameLen);
            if($blockframe > $pcmFrameIndex) {
                $block = undef;
            }
        }
        if(! $block) {
            if(! $prevcluster) {

lib/MHFS/Plugin/GetVideo.pm  view on Meta::CPAN

            next;
        }

        $prevcluster = undef;

        my $pcmSampleCount = ($pcmFrameLen * scalar(@{$block->{'frame_lengths'}}));
        if($pcmFrameIndex < ($blockframe +  $pcmSampleCount)) {
            if((($pcmFrameIndex - $blockframe) % $pcmFrameLen) != 0) {
                say "Frame index does not align with block!";
                return undef;
            }
            last;
        }
    }

    # add the data to packs
    my $offset = 0;
    while($blockframe < $pcmFrameIndex) {
        my $len = shift @{$block->{'frame_lengths'}};
        $offset += $len;
        $blockframe += $pcmFrameLen;
    }
    $matroska->{'curframe'} = $pcmFrameIndex;
    foreach my $len (@{$block->{'frame_lengths'}}) {
        push @{$matroska->{'curpaks'}}, substr($block->{'data'}, $offset, $len);
        $offset += $len;
    }
    return 1;
}

lib/MHFS/Plugin/GetVideo.pm  view on Meta::CPAN

    say 'blockts ' . $block->{'ts'};
    my $time = ($matroska->{'dc'}->{'rawts'} + $block->{'ts'}) * $matroska->{'tsscale'};
    return ($time/1000000000);
}

sub matroska_block_calc_frame {
    my ($matroska, $block, $samplerate, $pcmFrameLen) = @_;
    say 'clusterts ' . ($matroska->{'dc'}->{'ts'}/1000000000);
    say 'blockts ' . $block->{'ts'};
    my $time = ($matroska->{'dc'}->{'rawts'} + $block->{'ts'}) * $matroska->{'tsscale'};
    say 'blocktime ' . ($time/1000000000);
    my $calcframe = matroska_ts_to_sample($matroska, $samplerate, $time);
    return round($calcframe/$pcmFrameLen)*$pcmFrameLen;
}

sub matroska_read_track {
    my ($matroska, $track, $pcmFrameIndex, $numsamples, $formatpacket) = @_;
    my $tid = $track->{&EBMLID_TrackNumber}{'value'};

lib/MHFS/Plugin/GetVideo.pm  view on Meta::CPAN

        warn("Unknown codec");
        return undef;
    }

    # find the cluster that might have the start of our audio
    if($matroska->{'curframe'} != $pcmFrameIndex) {
        say "do seek";
        if(!matroska_seek_track($matroska, $track, $pcmFrameIndex)) {
            return undef;
        }
    }

    my $outdata;
    my $destframe = $matroska->{'curframe'} + $numsamples;

    while(1) {
        # add read audio
        while(@{$matroska->{'curpaks'}}) {
            my $pak = shift @{$matroska->{'curpaks'}};
            $outdata .= $formatpacket->($pak, $samplerate);
            $matroska->{'curframe'} += $pcmFrameLen;
            if($matroska->{'curframe'} == $destframe) {
                say "done, read enough";
                return $outdata;
            }
        }

lib/MHFS/Plugin/GetVideo.pm  view on Meta::CPAN

            return $outdata;
        }

        # add the data to paks
        my $offset = 0;
        foreach my $len (@{$block->{'frame_lengths'}}) {
            push @{$matroska->{'curpaks'}}, substr($block->{'data'}, $offset, $len);
            $offset += $len;
        }
    }
}

 view all matches for this distribution


App-MaMGal

 view release on metacpan or  search on metacpan

lib/App/MaMGal/MplayerWrapper.pm  view on Meta::CPAN

		App::MaMGal::MplayerWrapper::ExecutionFailureException->throw("Fork failed: $!");
	} elsif ($pid == 0) {
		# Child
		open(STDOUT, ">${dir}/stdout") or App::MaMGal::MplayerWrapper::ExecutionFailureException->throw("Cannot open \"${dir}/stdout\" for writing: $!");
		open(STDERR, ">${dir}/stderr") or App::MaMGal::MplayerWrapper::ExecutionFailureException->throw("Cannot open \"${dir}/stderr\" for writing: $!");
		my @cmd = ('mplayer', $film_path, '-noautosub', '-nosound', '-vo', "jpeg:quality=100:outdir=${dir}", '-frames', '2');
		{ # own scope to prevent a compile-time warning
		exec(@cmd);
		}
		App::MaMGal::MplayerWrapper::ExecutionFailureException->throw("Cannot run mplayer: $!");
	} else {

 view all matches for this distribution


App-MatrixClient

 view release on metacpan or  search on metacpan

lib/App/MatrixClient/RoomTab.pm  view on Meta::CPAN

            child => Tickit::Widget::Frame->new(
               style => {
                  linetype => "none",
                  linetype_left => "single",

                  frame_fg => "white", frame_bg => "purple",
               },
               child => $vbox,
            ),

            top => 0, bottom => -1, right => -1,

 view all matches for this distribution


App-MediaPi

 view release on metacpan or  search on metacpan

script/mediapi  view on Meta::CPAN

$wnd->g_wm_attribute(-fullscreen => 1, -topmost => 1);
$wnd->g_wm_resizable(0, 0);
$wnd->configure(-cursor => 'none');
$wnd->g_wm_geometry("${screen_x}x${screen_y}");

my $media_control_frame = $wnd->new_ttk__frame(-borderwidth => 5); # The border is here only to debug
$media_control_frame->g_grid(-column => 0, -row => 0, -sticky => 'nswe');
$wnd->g_grid_columnconfigure(0, -weight => 1);
$wnd->g_grid_rowconfigure(0, -weight => 1);

# The default font does not have the media control glyphs. So let’s create a
# style using Unifont that has almost all glyphs.
# Useful link: https://en.wikipedia.org/wiki/Media_control_symbols
Tkx::ttk__style_configure('Unicode.TButton', -font => 'Unifont 15');

$media_control_frame->g_grid_columnconfigure(0, -weight => 1);
$media_control_frame->g_grid_columnconfigure(1, -weight => 1);
$media_control_frame->g_grid_rowconfigure(0, -weight => 1);
$media_control_frame->g_grid_rowconfigure(1, -weight => 1);

my $vlc_in;
my $vlc_out;
# my $vlc = IPC::Run::start ['vlc', '--intf', 'rc', '--alsa-audio-device', 'dac'], $vlc_in;
my $vlc = IPC::Run::start ['vlc', '--intf', 'rc'], $vlc_in, \$vlc_out;

script/mediapi  view on Meta::CPAN

        (defined $track_length ? sprintf('%d:%02d', $track_length / 60, $track_length % 60) : '??'),
  }
  Tkx::after(200, \&get_status);
}

my $play_btn = $media_control_frame->new_ttk__button(-text => '⏵', -style => 'Unicode.TButton', -command => sub { send_cmd('add cdda:///dev/cdrom') });
$play_btn->g_grid(-column => 0, -row => 0, -sticky => 'nswe', -padx => 10, -pady => 10);
my $pause_btn = $media_control_frame->new_ttk__button(-text => '⏸', -style => 'Unicode.TButton',
                                                      -command => sub { send_cmd('pause') });
$pause_btn->g_grid(-column => 1, -row => 0, -sticky => 'nswe', -padx => 10, -pady => 10);
my $prev_btn = $media_control_frame->new_ttk__button(-text => '⏮', -style => 'Unicode.TButton',
                                                     -command => sub { send_cmd('prev') });
$prev_btn->g_grid(-column => 0, -row => 1, -sticky => 'nswe', -padx => 10, -pady => 10);
my $next_btn = $media_control_frame->new_ttk__button(-text => '⏭', -style => 'Unicode.TButton',
                                                     -command => sub { send_cmd('next') });
$next_btn->g_grid(-column => 1, -row => 1, -sticky => 'nswe', -padx => 10, -pady => 10);
my $status_label = $media_control_frame->new_ttk__label(-textvariable => \$track_status, -anchor => 'center');
$status_label->g_grid(-column => 0, -columnspan => 2, -row => 2, -sticky => 'nswe');

# This remove the focus and "active" decoration of the button when they are selected.
# We might want some kind of feedback that they were selected though.
Tkx::bind('TButton', '<FocusIn>', [sub { $wnd->g_focus(); Tkx::widget->new($_[0])->state('!active'); }, Tkx::Ev('%W')]);

 view all matches for this distribution


App-Milter-Limit

 view release on metacpan or  search on metacpan

lib/App/Milter/Limit.pm  view on Meta::CPAN

 $milter->register;
 $milter->main

=head1 DESCRIPTION

This is a milter framework that limits the number of messages sent by SMTP
envelope sender within a specified time period.  The number of messages and
length of time in which the maximum number of messages can be sent is
configurable in the configuration file.  Once the limit is reached, messages
will be rejected from that sender until the time period has elapsed.

 view all matches for this distribution


App-Mimosa

 view release on metacpan or  search on metacpan

README.md  view on Meta::CPAN



## What is Mimosa written in?

Mimosa is written in Perl 5, HTML, CSS, and JavaScript.  On the server side, it
uses Moose, BioPerl and the Catalyst web framework.  On the client side, it uses
JQuery, JQuery UI.

## How can I help hack on Mimosa or otherwise get involved?

Please join our mailing list at <http://groups.google.com/group/gmod-mimosa> and

 view all matches for this distribution


App-Modular

 view release on metacpan or  search on metacpan

lib/App/Modular.pm  view on Meta::CPAN

#!/usr/bin/perl -w
#----------------------------------------------------------------------------
#   App::Modular - perl program modularization framewok
#   App::Modular.pm: module management class
#
#   Copyright (c) 2003-2004 Baltasar Cevc
#
#   This code is released under the L<perlartistic> Perl Artistic

lib/App/Modular.pm  view on Meta::CPAN

##################################
=pod

=head1 NAME

B<App::Modular> - modularization framework for perl programs

=head1 SYNOPSIS

	package App::Modular::Module::Test;

lib/App/Modular.pm  view on Meta::CPAN


	exit;

=head1 DESCRIPTION

App::Modular aims to provide a framework which should it make very
easy to programmes to create any kind of modular program.

It supports:

=over 4

 view all matches for this distribution



App-Mowyw

 view release on metacpan or  search on metacpan

Changelog  view on Meta::CPAN

	* lib/Mowyw.pm: Add line number to error message
	* *: Changed license to Artistic 2.0
mowyw (0.5.2)
	* lib/Mowyw.pm: configurable filter for which files to process
	* lib/Mowyw/Datasource/Result.pm: First shot at a more general result set
	  framework. Not yet used by the rest of the program.
mowyw (0.5.1)
	* mowyw: make mowyw encoding aware, added --encoding option. Default is
	  utf-8
mowyw (0.5.0)
	* mowyw: Moved nearly all functionally to a module to allow better testing

 view all matches for this distribution


App-MultiModule

 view release on metacpan or  search on metacpan

lib/App/MultiModule/Core.pm  view on Meta::CPAN

    return;
}

=head2 named_recur(%args)

This is the preferred method to schedule recurring code in this framework.
Typically called from within set_config(), it automatically ensures
that only a single POE recurring event is setup, no matter how many times
named_recur() is called.

Simply put: if your tasks has code that needs to run on an interval,

lib/App/MultiModule/Core.pm  view on Meta::CPAN

};

=head2 get_multimodules_info

This returns a hash reference that contains information about every
task that the MultiModule framework is aware of.  'aware of' is not
limited to running and/or loaded.  A MultiModule task module that
exists in the configured search path, even though it is not referenced
or configured, will also be in this structure.

The key to the return hash is the task name.  The value is a reference

 view all matches for this distribution


App-Music-ChordPro

 view release on metacpan or  search on metacpan

lib/ChordPro/Config.pm  view on Meta::CPAN

	    my $i = {};

	    # Break out ;xx=yy properties.
	    while ( $v =~ s/\s*;\s*(\w+)\s*=\s*(.*?)\s*(;|$)/$3/ ) {
		my ( $k, $v ) = ( $1, $2 );
		if ( $k =~ /^(colou?r|background|frame|numbercolou?r|size)$/ ) {
		    $k =~ s/colour/color/;
		    $v =~ s/^(['"]?)(.*)\1$/$2/;
		    $i->{$k} = $v;
		}
		else {

 view all matches for this distribution


( run in 1.821 second using v1.01-cache-2.11-cpan-e1769b4cff6 )