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 )