CLI-Gwrap

 view release on metacpan or  search on metacpan

lib/CLI/Gwrapper/wxGrid.pm  view on Meta::CPAN

#===============================================================================
#
#      PODNAME:  CLI::Gwrapper::wxGrid
#     ABSTRACT:  CLI::Gwrap graphical wrapper in a wxGrid
#
#       AUTHOR:  Reid Augustin
#        EMAIL:  reid@LucidPort.com
#      CREATED:  07/08/2013 12:08:30 PM
#===============================================================================

use 5.008;
use strict;
use warnings;

package CLI::Gwrapper::wxGrid;

use Moo;
extends 'CLI::Gwrapper::Wx::App';
with 'CLI::Gwrapper';   # this module must satisfy the Gwrapper role
use Types::Standard qw( Str Int Bool ArrayRef CodeRef InstanceOf );

use Carp;
use Scalar::Util(qw( looks_like_number ));
use Wx qw(
    :sizer
    :combobox
    :textctrl
    wxNOT_FOUND wxID_EXIT
    wxTELETYPE
);
use Wx::Event qw(
    EVT_BUTTON
    EVT_COLLAPSIBLEPANE_CHANGED
);

has 'sizer'            => (is => 'rw', isa => InstanceOf['Wx::BoxSizer']);
has 'notebook'         => (is => 'rw', isa => InstanceOf['Wx::Notebook']);
has 'Command_page'     => (is => 'rw', isa => InstanceOf['Wx::Panel']);
has 'STDOUT_page'      => (is => 'rw', isa => InstanceOf['Wx::Panel']);
has 'STDERR_page'      => (is => 'rw', isa => InstanceOf['Wx::Panel']);
has 'STDOUT_text_ctrl' => (is => 'rw', isa => InstanceOf['Wx::TextCtrl']);
has 'STDERR_text_ctrl' => (is => 'rw', isa => InstanceOf['Wx::TextCtrl']);

our $VERSION = '0.030'; # VERSION

sub BUILD {
    my ($self, $params) = @_;

    $self->_populate_window($self->panel);   # fill in all the parts

    $self->frame->Show;     # put it up on the screen
}

sub title {     # required by Gwrapper role
    my ($self, $new) = @_;

    if (@_ > 1) {
        $self->frame->SetTitle($new);
        $self->{title} = $new;
    }
    return $self->{title};
}

sub run {       # required by Gwrapper role
    my ($self) = @_;

    $self->MainLoop;        # run the main event loop
}

sub _populate_window {
    my ($self, $parent) = @_;

    $self->notebook(Wx::Notebook->new($parent));

    my $sizer = Wx::BoxSizer->new(wxVERTICAL);
    $self->sizer($sizer);
    $sizer->Add(
        $self->notebook,
        1,                      # proportion
        wxEXPAND | wxALL,       # flags
        0,                      # border
    );

    $self->_populate_command_page;
    # add the control buttons at the bottom
    $sizer->Add(



( run in 1.179 second using v1.01-cache-2.11-cpan-39bf76dae61 )