App-Devel-MAT-Explorer-GTK

 view release on metacpan or  search on metacpan

Changes  view on Meta::CPAN

Revision history for App-Devel-MAT-Explorer-GTK

0.06    2018-07-03 15:00:54
        [CHANGES]
         * Updates for Devel::MAT 0.35:
            + Use of 'Commandable::Invocation'
            + Show 'pmat>' or 'pmat [more]>' prompt

        [BUGFIXES]
         * Fix for ->symname method

0.05    2017-10-10 01:00:55
        [CHANGES]
         * Implement the new Devel::MAT::Cmd integration methods for
           Devel::MAT version 0.28
         * Quiet the warning about large numbers being nonportable for hex()

lib/App/Devel/MAT/Explorer/GTK/Shell.pm  view on Meta::CPAN


use Glib qw( TRUE FALSE );
use String::Tagged 0.15;  # sprintf
use Commandable::Invocation;

Devel::MAT->VERSION( '0.35' ); # Commandable::Invocation

# The perl bindings don't make this very easy
use constant PANGO_WEIGHT_BOLD => 700;

my ( $pmat, $buffer, $textview, $endmark, $scrolledwindow, $prompt );
my ( @styletags, $errortag, $svtag, $valuetag, $symboltag );

sub build_widget
{
   my $class = shift;
   ( $pmat ) = @_;

   my $vbox = Gtk2::VBox->new;

   $vbox->pack_start( $scrolledwindow = Gtk2::ScrolledWindow->new, TRUE, TRUE, 0 );

lib/App/Devel/MAT/Explorer/GTK/Shell.pm  view on Meta::CPAN

   );

   $symboltag = $buffer->create_tag( undef,
      foreground => "#00B000",
   );

   $endmark = $buffer->create_mark( 'end', $buffer->get_end_iter, FALSE );

   $vbox->pack_start( my $hbox = Gtk2::HBox->new, FALSE, FALSE, 0 );

   $prompt = Gtk2::Label->new( "pmat>" );

   $hbox->pack_start( $prompt, FALSE, FALSE, 0 );

   my $entry = Gtk2::Entry->new;

   $hbox->pack_start( $entry, TRUE, TRUE, 0 );

   $entry->modify_font( Gtk2::Pango::FontDescription->from_string( 'monospace' ) );

   $entry->signal_connect( activate => sub {
      my $cmd = $entry->get_text;
      $entry->set_text( "" );

lib/App/Devel/MAT/Explorer/GTK/Shell.pm  view on Meta::CPAN

      $pmat->load_tool_for_command( $cmd,
         progress => \&::progress,
      )->run_cmd( $inv );
      1;
   } or do {
      my $err = $@;
      chomp $err;
      append_output( "ERR: $err\n", $errortag );
   };

   $prompt->set_text( sprintf "pmat%s>", Devel::MAT::Tool::more->can_more ? " [more]" : "" );
}

my $linefeed_pending;

sub append_output
{
   my ( $str, @tags ) = @_;

   my $adj = $scrolledwindow->get_vadjustment;
   my $at_end = $adj->get_value == ( $adj->upper - $adj->page_size );



( run in 0.536 second using v1.01-cache-2.11-cpan-6aa56a78535 )