LPDS

 view release on metacpan or  search on metacpan

bin/LPDS.pl  view on Meta::CPAN

my $BUILDER;
my $CANVAS;
my $RENDERER;

my %cpu;
my %gpu;

main();

sub main {
    load_gui();
    init_resources();

    $BUILDER->get_object('CPUComboBox')->set_active(0);
    $BUILDER->get_object('GPUComboBox')->set_active(0);

    $RENDERER = LPDS::Renderer->new(
        table          => $BUILDER->get_object('ModelTable'),
        canvas         => $CANVAS,
        data           => $BUILDER->get_object('ModelListStore'),
        CPU            => \%cpu,
        GPU            => \%gpu,
        click_callback => \&on_curve_clicked
    );

    $BUILDER->get_object('MainWindow')->show_all;
    Gtk2->main;
}

sub load_gui {
    my $file_glade = dist_file( 'LPDS', 'LPDS.glade' );
    $BUILDER = Gtk2::Builder->new;
    $BUILDER->add_from_file($file_glade);
    $BUILDER->connect_signals;

    # set init path of file choosers to current
    my $cwd = getcwd();
    $BUILDER->get_object('AppendDialog')->set_current_folder($cwd);
    $BUILDER->get_object('SaveDialog')->set_current_folder($cwd);

    # exit on main window destroy
    my $mw = $BUILDER->get_object('MainWindow');

    $mw->signal_connect( destroy => sub { Gtk2->main_quit } );
    $mw->maximize;

    # update renderer on table selection change
    my $table = $BUILDER->get_object('ModelTable');
    $table->get_selection->signal_connect(
        changed => \&on_table_selection_changed );

    #
    # create canvas object
    #
    $CANVAS = Goo::Canvas->new();
    $CANVAS->set_size_request( 1000, 400 );
    $CANVAS->set_bounds( 0, 0, 1000, 400 );
    $BUILDER->get_object('CanvasParent')->add($CANVAS);

    #
    # renderer for combobox
    #
    my $data_func = sub {
        my ( undef, $cell, $data, $iter ) = @_;
        my $text = $data->get( $iter, 0 );
        say "set cell text: $text";
        $cell->set( text => $text );
    };

    my $cpu_combo    = $BUILDER->get_object('CPUComboBox');
    my $cpu_renderer = Gtk2::CellRendererText->new;
    $cpu_combo->pack_start( $cpu_renderer, TRUE );
    $cpu_combo->add_attribute( $cpu_renderer, text => 0 );

    #    $cpu_combo->set_active(0);
    #    $cpu_combo->set('entry-text-column', 0);
    #    $cpu_combo->set_cell_data_func($cpu_renderer,$data_func);

    my $gpu_combo    = $BUILDER->get_object('GPUComboBox');
    my $gpu_renderer = Gtk2::CellRendererText->new;
    $gpu_combo->pack_start( $gpu_renderer, TRUE );
    $gpu_combo->add_attribute( $gpu_renderer, text => 0 );

    #    $gpu_combo->set_active(0);
    #    $cpu_combo->set('entry-text-column', 0);
    #    $cpu_combo->set_cell_data_func($cpu_renderer,$data_func);

    #
    # renderer for table
    #

    # name
    my @columns;
    push @columns,
      Gtk2::TreeViewColumn->new_with_attributes( "Name",
        Gtk2::CellRendererText->new, 'text', COL_NAME );

    # CPU name
    push @columns,
      Gtk2::TreeViewColumn->new_with_attributes( "CPU",
        Gtk2::CellRendererText->new, 'text', COL_CPU_NAME );

    # GPU name
    push @columns,
      Gtk2::TreeViewColumn->new_with_attributes( "GPU",
        Gtk2::CellRendererText->new, 'text', COL_GPU_NAME );

    # memory
    my $renderer_col_mem_sz = Gtk2::CellRendererText->new;
    my $col_mem_sz          = Gtk2::TreeViewColumn->new();
    $col_mem_sz->set( title => 'Memory Size' );
    $col_mem_sz->pack_start( $renderer_col_mem_sz, TRUE );
    $col_mem_sz->set_cell_data_func(
        $renderer_col_mem_sz,
        sub {
            my ( $col, $cell, $store, $iter ) = @_;
            my $value = $store->get( $iter, COL_MEM_SZ );
            my $text;
            if ( !defined $value ) {
                $text = '';
            }



( run in 2.360 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )