Line 60... |
Line 60... |
my $label = gen_label_in_left("Select file:");
|
my $label = gen_label_in_left("Select file:");
|
my $entry = Gtk2::Entry->new;
|
my $entry = Gtk2::Entry->new;
|
my $open= def_image_button("icons/select.png","Open");
|
my $open= def_image_button("icons/select.png","Open");
|
my $browse= def_image_button("icons/browse.png","Browse");
|
my $browse= def_image_button("icons/browse.png","Browse");
|
my $file= $intfc_gen->intfc_get_interface_file();
|
my $file= $intfc_gen->intfc_get_interface_file();
|
|
my $intfc_info= def_image_button("icons/info.png","Description");
|
|
$intfc_info->signal_connect("clicked"=> sub{
|
|
get_intfc_description($intfc_gen,$soc_state,$info);
|
|
|
|
|
|
});
|
|
|
if(defined $file){$entry->set_text($file);}
|
if(defined $file){$entry->set_text($file);}
|
show_info(\$info,"Please select the verilog file containig the interface\n");
|
show_info(\$info,"Please select the verilog file containig the interface\n");
|
$browse->signal_connect("clicked"=> sub{
|
$browse->signal_connect("clicked"=> sub{
|
my $entry_ref=$_[1];
|
my $entry_ref=$_[1];
|
my $file;
|
my $file;
|
Line 110... |
Line 117... |
|
|
$entry->signal_connect("changed"=>sub{
|
$entry->signal_connect("changed"=>sub{
|
show_info(\$info,"Please select the verilog file containig the interface\n");
|
show_info(\$info,"Please select the verilog file containig the interface\n");
|
});
|
});
|
|
|
$table->attach_defaults ($label, 0, 2 , $row, $row+1);
|
$table->attach_defaults ($label, 0, 1 , $row, $row+1);
|
$table->attach_defaults ($entry, 2, 8 , $row, $row+1);
|
$table->attach_defaults ($entry, 1, 7 , $row, $row+1);
|
$table->attach_defaults ($browse, 8, 9, $row, $row+1);
|
$table->attach_defaults ($browse, 7, 8, $row, $row+1);
|
$table->attach_defaults ($open, 9, 10, $row, $row+1);
|
$table->attach_defaults ($intfc_info, 8, 9 , $row, $row+1);
|
|
#$table->attach_defaults ($open, 9, 10, $row, $row+1);
|
#$table->attach_defaults ($entry, $col, $col+1, $row, $row+1);
|
#$table->attach_defaults ($entry, $col, $col+1, $row, $row+1);
|
#return $table;
|
#return $table;
|
|
|
|
|
}
|
}
|
Line 230... |
Line 238... |
$check->signal_connect("toggled"=>sub{
|
$check->signal_connect("toggled"=>sub{
|
my $widget=shift;
|
my $widget=shift;
|
my $in=$widget->get_active();
|
my $in=$widget->get_active();
|
if ($in eq 1){
|
if ($in eq 1){
|
my $connect_type=($porttype eq "input")? "output" : ($porttype eq "output")? "input" : $porttype;
|
my $connect_type=($porttype eq "input")? "output" : ($porttype eq "output")? "input" : $porttype;
|
$infc_gen->intfc_add_port($port_id,$porttype,$portrange,$p,$connect_type,$portrange,$p,"concatenate");
|
$infc_gen->intfc_add_port($port_id,$porttype,$portrange,$p,$connect_type,$portrange,$p,"concatenate","Active low");
|
|
|
|
|
|
|
#print "chanhed to $in \n";
|
#print "chanhed to $in \n";
|
}else {
|
}else {
|
Line 282... |
Line 290... |
my $port= def_image_button("icons/import.png","Import Ports");
|
my $port= def_image_button("icons/import.png","Import Ports");
|
my $label2= gen_label_in_left(" Select Category:");
|
my $label2= gen_label_in_left(" Select Category:");
|
my ($category,$category_entry)=gen_entry_help('Define the Interface category:e.g RAM, wishbone,...');
|
my ($category,$category_entry)=gen_entry_help('Define the Interface category:e.g RAM, wishbone,...');
|
my $saved_category=$infc_gen->intfc_get_category();
|
my $saved_category=$infc_gen->intfc_get_category();
|
if(defined $saved_category){$category_entry->set_text($saved_category);}
|
if(defined $saved_category){$category_entry->set_text($saved_category);}
|
my $intfc_info= def_image_button("icons/info.png","Description");
|
|
|
|
$table->attach_defaults ($label, 0, 2 , $row, $row+1);
|
|
$table->attach_defaults ($combo, 2, 4 , $row,$row+1);
|
$table->attach_defaults ($label, 0, 1 , $row, $row+1);
|
$table->attach_defaults ($port, 4, 6 , $row, $row+1);
|
$table->attach_defaults ($combo, 1, 3 , $row,$row+1);
|
$table->attach_defaults ($label2, 6, 7 , $row, $row+1);
|
$table->attach_defaults ($port, 3, 4 , $row, $row+1);
|
$table->attach_defaults ($category, 7, 9 , $row, $row+1);
|
$table->attach_defaults ($label2, 4, 5 , $row, $row+1);
|
$table->attach_defaults ($intfc_info, 9, 10 , $row, $row+1);
|
$table->attach_defaults ($category, 5, 6 , $row, $row+1);
|
|
|
|
|
|
|
$combo->signal_connect("changed"=> sub{
|
$combo->signal_connect("changed"=> sub{
|
my $module= $combo->get_active_text();
|
my $module= $combo->get_active_text();
|
$infc_gen->intfc_set_module_name($module);
|
$infc_gen->intfc_set_module_name($module);
|
Line 309... |
Line 317... |
$category_entry->signal_connect("changed"=> sub{
|
$category_entry->signal_connect("changed"=> sub{
|
my $name=$category_entry->get_text();
|
my $name=$category_entry->get_text();
|
$infc_gen->intfc_set_category($name);
|
$infc_gen->intfc_set_category($name);
|
|
|
});
|
});
|
$intfc_info->signal_connect("clicked"=> sub{
|
|
get_intfc_description($infc_gen,$soc_state,$info);
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
}
|
}
|
|
|
sub interface_type_select {
|
sub interface_type_select {
|
my ($infc_gen,$soc_state,$info,$table,$row)=@_;
|
my ($infc_gen,$soc_state,$info,$table,$row)=@_;
|
my $saved_intfc_type= $infc_gen->intfc_get_interface_type();
|
my $saved_intfc_type= $infc_gen->intfc_get_interface_type();
|
my $label = gen_label_in_left("Interface name:");
|
my $label = gen_label_in_left("Interface name:");
|
$table->attach_defaults ($label, 0, 2 , $row, $row+1);
|
|
|
|
my $saved_name=$infc_gen->intfc_get_interface_name();
|
my $saved_name=$infc_gen->intfc_get_interface_name();
|
my $entry=gen_entry($saved_name);
|
my $entry=gen_entry($saved_name);
|
$table->attach_defaults ($entry, 2, 4 , $row, $row+1);
|
|
$entry->signal_connect("changed"=>sub{
|
$entry->signal_connect("changed"=>sub{
|
my $widget=shift;
|
my $widget=shift;
|
my $name=$widget->get_text();
|
my $name=$widget->get_text();
|
$infc_gen->intfc_set_interface_name($name);
|
$infc_gen->intfc_set_interface_name($name);
|
set_state($soc_state,"refresh",50);
|
set_state($soc_state,"refresh",50);
|
Line 340... |
Line 344... |
}
|
}
|
);
|
);
|
|
|
my $saved_connection_num= $infc_gen->intfc_get_connection_num();
|
my $saved_connection_num= $infc_gen->intfc_get_connection_num();
|
my $label2 = gen_label_in_left("Select soket type:");
|
my $label2 = gen_label_in_left("Select soket type:");
|
$table->attach_defaults ($label2, 5, 7 , $row, $row+1);
|
|
my @connection_nums=("single connection","multi connection");
|
my @connection_nums=("single connection","multi connection");
|
my $pos;
|
my $pos;
|
if(defined $saved_connection_num){
|
if(defined $saved_connection_num){
|
$pos= get_scolar_pos( $saved_connection_num,@connection_nums);
|
$pos= get_scolar_pos( $saved_connection_num,@connection_nums);
|
}
|
}
|
else {
|
else {
|
$pos= 0;
|
$pos= 0;
|
$infc_gen->intfc_set_connection_num($connection_nums[0]);
|
$infc_gen->intfc_set_connection_num($connection_nums[0]);
|
}
|
}
|
my $combo=gen_combo(\@connection_nums,$pos);
|
my $combo=gen_combo(\@connection_nums,$pos);
|
$table->attach_defaults ($combo, 7, 9 , $row, $row+1);
|
|
$combo->signal_connect("changed"=>sub{
|
$combo->signal_connect("changed"=>sub{
|
my $widget=shift;
|
my $widget=shift;
|
my $connection_num=$widget->get_active_text();
|
my $connection_num=$widget->get_active_text();
|
$infc_gen->intfc_set_connection_num($connection_num);
|
$infc_gen->intfc_set_connection_num($connection_num);
|
set_state($soc_state,"refresh",1);
|
set_state($soc_state,"refresh",1);
|
|
|
});
|
});
|
|
$table->attach_defaults ($label, 0, 1 , $row, $row+1);
|
|
$table->attach_defaults ($entry, 1, 2 , $row, $row+1);
|
|
$table->attach_defaults ($label2, 2, 3 , $row, $row+1);
|
|
$table->attach_defaults ($combo, 3, 4 , $row, $row+1);
|
|
|
|
|
|
|
}
|
}
|
|
|
|
sub port_width_repeat{
|
|
my ($range,$value)=@_;
|
|
$range=remove_all_white_spaces($range);
|
|
my ($h,$l)=split(':',$range);
|
|
return "$value" if(!defined $h ) ; # port width is 1
|
|
return "$value" if($h eq "0" && "$l" eq "0"); # port width is 1
|
|
$h=$l if($h eq "0" && "$l" ne "0");
|
|
if($h =~ /-1$/){ # the address ranged is endup with -1
|
|
$h =~ s/-1$//; # remove -1
|
|
return "\{$h\{$value\}\}" if($h =~ /\)$/);
|
|
return "\{($h)\{$value\}\}" if($h =~ /[\*\.\+\-\^\%\&]/);
|
|
return "\{$h\{$value\}\}";
|
|
}
|
|
return "\{($h+1){$value}}";
|
|
}
|
|
|
|
|
|
|
|
|
sub port_select{
|
sub port_select{
|
my ($infc_gen,$soc_state,$info,$table,$row)=@_;
|
my ($infc_gen,$soc_state,$info,$table,$row)=@_;
|
my(%types,%ranges,%names,%connect_types,%connect_ranges,%connect_names,%outport_types);
|
my(%types,%ranges,%names,%connect_types,%connect_ranges,%connect_names,%outport_types,%default_outs);
|
$infc_gen->intfc_get_ports(\%types,\%ranges,\%names,\%connect_types,\%connect_ranges,\%connect_names,\%outport_types);
|
$infc_gen->intfc_get_ports(\%types,\%ranges,\%names,\%connect_types,\%connect_ranges,\%connect_names,\%outport_types,\%default_outs);
|
|
|
my $size = keys %types;
|
my $size = keys %types;
|
if($size >0){
|
if($size >0){
|
my $sep = Gtk2::HSeparator->new;
|
my $sep = Gtk2::HSeparator->new;
|
$table->attach_defaults ($sep, 0, 10 , $row, $row+1); $row++;
|
$table->attach_defaults ($sep, 0, 10 , $row, $row+1); $row++;
|
|
|
|
|
my $swap= def_image_button("icons/swap.png");
|
my $swap= def_image_button("icons/swap.png","swap");
|
$table->attach_defaults ($swap, 4, 6 , $row, $row+1);
|
|
$swap->signal_connect('clicked'=>sub{
|
$swap->signal_connect('clicked'=>sub{
|
my $type=$infc_gen->intfc_get_interface_type();
|
my $type=$infc_gen->intfc_get_interface_type();
|
if($type eq 'plug'){
|
if($type eq 'plug'){
|
$infc_gen->intfc_set_interface_type('socket');
|
$infc_gen->intfc_set_interface_type('socket');
|
}
|
}
|
Line 415... |
Line 435... |
$lab2=def_image_label('icons/plug.png','plug');
|
$lab2=def_image_label('icons/plug.png','plug');
|
$lab1=def_image_label('icons/socket.png','socket');
|
$lab1=def_image_label('icons/socket.png','socket');
|
|
|
}
|
}
|
|
|
|
my $sep2 = Gtk2::HSeparator->new;
|
|
|
|
|
$table->attach_defaults ($lab1, 2, 3 , $row, $row+1);
|
$table->attach_defaults ($lab1, 1, 2 , $row, $row+1);
|
$table->attach_defaults ($lab2, 7, 8 , $row, $row+1); $row++;
|
$table->attach_defaults ($swap, 3, 4 , $row, $row+1);
|
my $sep2 = Gtk2::HSeparator->new;
|
$table->attach_defaults ($lab2, 5, 6 , $row, $row+1); $row++;
|
$table->attach_defaults ($sep2, 0, 10 , $row, $row+1); $row++;
|
$table->attach_defaults ($sep2, 0, 9 , $row, $row+1); $row++;
|
|
|
|
|
my $lab3= gen_label_in_center("Type");
|
my $lab3= gen_label_in_center("Type");
|
my $lab4= gen_label_in_center("Range");
|
my $lab4= gen_label_in_center("Range");
|
my $lab5= gen_label_in_center("Name");
|
my $lab5= gen_label_in_center("Name");
|
$table->attach_defaults ($lab3, 0, 1 , $row, $row+1);
|
$table->attach_defaults ($lab3, 0, 1 , $row, $row+1);
|
$table->attach_defaults ($lab4, 1, 3 , $row, $row+1);
|
$table->attach_defaults ($lab4, 1, 2 , $row, $row+1);
|
$table->attach_defaults ($lab5, 3, 5 , $row, $row+1);
|
$table->attach_defaults ($lab5, 2, 3 , $row, $row+1);
|
my $lab6= gen_label_in_center("Type");
|
my $lab6= gen_label_in_center("Type");
|
my $lab7= gen_label_in_center("Range");
|
my $lab7= gen_label_in_center("Range");
|
my $lab8= gen_label_in_center("Name");
|
my $lab8= gen_label_in_center("Name");
|
$table->attach_defaults ($lab6, 5, 6 , $row, $row+1);
|
$table->attach_defaults ($lab6, 4, 5 , $row, $row+1);
|
$table->attach_defaults ($lab7, 6, 8 , $row, $row+1);
|
$table->attach_defaults ($lab7, 5, 6 , $row, $row+1);
|
$table->attach_defaults ($lab8, 8, 9 , $row, $row+1);
|
$table->attach_defaults ($lab8, 6, 7 , $row, $row+1);
|
my $lab9= gen_label_help ("will be added later!","output type");
|
my $lab9= gen_label_help ("When an IP core does not have any of interface output port, the default value will be send to the IP core's input port which is supposed to be connected to that port","Output port Default ");
|
#$table->attach_defaults ($lab9, 9, 10 , $row, $row+1);
|
$table->attach_defaults ($lab9, 8, 9 , $row, $row+1);
|
$row++;
|
$row++;
|
|
|
foreach my $id (sort keys %ranges){
|
foreach my $id (sort keys %ranges){
|
my $type=$types{$id};
|
my $type=$types{$id};
|
my $range=$ranges{$id};
|
my $range=$ranges{$id};
|
my $name=$names{$id};
|
my $name=$names{$id};
|
my $connect_type=$connect_types{$id};
|
my $connect_type=$connect_types{$id};
|
my $connect_range=$connect_ranges{$id};
|
my $connect_range=$connect_ranges{$id};
|
my $connect_name=$connect_names{$id};
|
my $connect_name=$connect_names{$id};
|
my $outport_type=$outport_types{$id};
|
my $outport_type=$outport_types{$id};
|
my $box=def_hbox(FALSE,0);
|
my $default_out=$default_outs{$id};
|
|
if(! defined $default_out){
|
|
$default_out = "Active low"; # port_width_repeat($connect_range,"1\'b0");
|
|
$infc_gen->intfc_add_port($id,$type,$range,$name,$connect_type,$connect_range,$connect_name,$outport_type,$default_out);
|
|
print "\$default_out is set to: $default_out\n ";
|
|
}
|
|
|
|
#my $box=def_hbox(FALSE,0);
|
|
|
my @ports_type=("input","output","inout");
|
my @ports_type=("input","output","inout");
|
my $pos=get_scolar_pos($type,@ports_type);
|
my $pos=get_scolar_pos($type,@ports_type);
|
my $combo1=gen_combo(\@ports_type,$pos);
|
my $combo1=gen_combo(\@ports_type,$pos);
|
my $entry2=gen_entry($range);
|
my $entry2=gen_entry($range);
|
Line 460... |
Line 488... |
my $connect_type_lable= gen_label_in_center($connect_type);
|
my $connect_type_lable= gen_label_in_center($connect_type);
|
my $entry4=gen_entry($connect_range);
|
my $entry4=gen_entry($connect_range);
|
my $entry5=gen_entry($connect_name);
|
my $entry5=gen_entry($connect_name);
|
my @outport_types=("shared","concatenate");
|
my @outport_types=("shared","concatenate");
|
my $pos2=get_scolar_pos($outport_type,@outport_types);
|
my $pos2=get_scolar_pos($outport_type,@outport_types);
|
|
|
my $combo2=gen_combo(\@outport_types,$pos2);
|
my $combo2=gen_combo(\@outport_types,$pos2);
|
|
|
$box->pack_start($entry3,FALSE,FALSE,3);
|
|
$box->pack_start($separator,FALSE,FALSE,3);
|
#my @list=(port_width_repeat($range,"1\'b0"),port_width_repeat($range,"1\'b1"),port_width_repeat($range,"1\'bx"));
|
|
my @list=("Active low","Active high","Don't care");
|
|
|
|
my $combentry=gen_combo_entry(\@list);
|
|
$pos2=get_scolar_pos($default_out,@list);
|
|
if( defined $pos2){
|
|
$combentry->set_active($pos2);
|
|
} else {
|
|
($combentry->child)->set_text($default_out);
|
|
}
|
|
|
|
|
|
#$box->pack_start($entry3,TRUE,FALSE,3);
|
|
#$box->pack_start($separator,TRUE,FALSE,3);
|
|
|
$table->attach_defaults ($combo1, 0, 1 , $row, $row+1);
|
$table->attach_defaults ($combo1, 0, 1 , $row, $row+1);
|
$table->attach_defaults ($entry2, 1, 3 , $row, $row+1);
|
$table->attach_defaults ($entry2, 1, 2 , $row, $row+1);
|
$table->attach_defaults ($box, 3, 5 , $row, $row+1);
|
$table->attach_defaults ($entry3, 2, 3 , $row, $row+1);
|
|
|
|
|
$table->attach_defaults ($connect_type_lable, 5, 6 , $row, $row+1);
|
$table->attach_defaults ($connect_type_lable, 4, 5 , $row, $row+1);
|
$table->attach_defaults ($entry4, 6, 8 , $row, $row+1);
|
$table->attach_defaults ($entry4, 5, 6 , $row, $row+1);
|
$table->attach_defaults ($entry5, 8, 9 , $row, $row+1);
|
$table->attach_defaults ($entry5, 6, 7 , $row, $row+1);
|
#$table->attach_defaults ($combo2, 9, 10 , $row, $row+1);
|
$table->attach_defaults ($combentry, 8, 9 , $row, $row+1);
|
|
|
$combo1->signal_connect("changed"=>sub{
|
$combo1->signal_connect("changed"=>sub{
|
my $new_type=$combo1->get_active_text();
|
my $new_type=$combo1->get_active_text();
|
my $new_connect_type=($new_type eq "input")? "output" : ($new_type eq "output")? "input" : $new_type;
|
my $new_connect_type=($new_type eq "input")? "output" : ($new_type eq "output")? "input" : $new_type;
|
$infc_gen->intfc_add_port($id,$new_type,$range,$name,$new_connect_type,$connect_range,$connect_name,$outport_type);
|
$infc_gen->intfc_add_port($id,$new_type,$range,$name,$new_connect_type,$connect_range,$connect_name,$outport_type,$default_out);
|
set_state($soc_state,"refresh",1);
|
set_state($soc_state,"refresh",1);
|
|
|
});
|
});
|
$entry2->signal_connect("changed"=>sub{
|
$entry2->signal_connect("changed"=>sub{
|
$range=$entry2->get_text();
|
$range=$entry2->get_text();
|
$infc_gen->intfc_add_port($id,$type,$range,$name,$connect_type,$connect_range,$connect_name,$outport_type);
|
$infc_gen->intfc_add_port($id,$type,$range,$name,$connect_type,$connect_range,$connect_name,$outport_type,$default_out);
|
set_state($soc_state,"refresh",50);
|
set_state($soc_state,"refresh",50);
|
|
|
});
|
});
|
$entry3->signal_connect("changed"=>sub{
|
$entry3->signal_connect("changed"=>sub{
|
$name=$entry3->get_text();
|
$name=$entry3->get_text();
|
$infc_gen->intfc_add_port($id,$type,$range,$name,$connect_type,$connect_range,$connect_name,$outport_type);
|
$infc_gen->intfc_add_port($id,$type,$range,$name,$connect_type,$connect_range,$connect_name,$outport_type,$default_out);
|
set_state($soc_state,"refresh",50);
|
set_state($soc_state,"refresh",50);
|
|
|
});
|
});
|
|
|
$entry4->signal_connect("changed"=>sub{
|
$entry4->signal_connect("changed"=>sub{
|
$connect_range=$entry4->get_text();
|
$connect_range=$entry4->get_text();
|
$infc_gen->intfc_add_port($id,$type,$range,$name,$connect_type,$connect_range,$connect_name,$outport_type);
|
$infc_gen->intfc_add_port($id,$type,$range,$name,$connect_type,$connect_range,$connect_name,$outport_type,$default_out);
|
set_state($soc_state,"refresh",50);
|
set_state($soc_state,"refresh",50);
|
|
|
});
|
});
|
$entry5->signal_connect("changed"=>sub{
|
$entry5->signal_connect("changed"=>sub{
|
$connect_name=$entry5->get_text();
|
$connect_name=$entry5->get_text();
|
$infc_gen->intfc_add_port($id,$type,$range,$name,$connect_type,$connect_range,$connect_name,$outport_type);
|
$infc_gen->intfc_add_port($id,$type,$range,$name,$connect_type,$connect_range,$connect_name,$outport_type,$default_out);
|
set_state($soc_state,"refresh",50);
|
set_state($soc_state,"refresh",50);
|
|
|
});
|
});
|
$combo2->signal_connect("changed"=>sub{
|
$combo2->signal_connect("changed"=>sub{
|
my $new_outport_type=$combo2->get_active_text();
|
my $new_outport_type=$combo2->get_active_text();
|
$infc_gen->intfc_add_port($id,$type,$range,$name,$connect_type,$connect_range,$connect_name,$new_outport_type);
|
$infc_gen->intfc_add_port($id,$type,$range,$name,$connect_type,$connect_range,$connect_name,$new_outport_type,$default_out);
|
set_state($soc_state,"refresh",1);
|
set_state($soc_state,"refresh",1);
|
|
|
});
|
});
|
|
($combentry->child)->signal_connect('changed' => sub {
|
|
my ($entry) = @_;
|
|
$default_out=$entry->get_text();
|
|
$infc_gen->intfc_add_port($id,$type,$range,$name,$connect_type,$connect_range,$connect_name,$outport_type,$default_out);
|
|
|
|
|
|
});
|
|
|
|
|
|
|
$row++;
|
$row++;
|
|
|
|
|
Line 572... |
Line 620... |
$dev_table = dev_box_gen($infc_gen,$soc_state,$info);
|
$dev_table = dev_box_gen($infc_gen,$soc_state,$info);
|
#$box->attach_defaults ($dev_table, 0, 1, 0, 1);#( $dev_table, FALSE, FALSE, 3);
|
#$box->attach_defaults ($dev_table, 0, 1, 0, 1);#( $dev_table, FALSE, FALSE, 3);
|
$scrolled_win->add_with_viewport($dev_table);
|
$scrolled_win->add_with_viewport($dev_table);
|
$dev_table->show;
|
$dev_table->show;
|
$scrolled_win->show_all;
|
$scrolled_win->show_all;
|
#print "llllllllllllllllllllllllllllllllllllll\n";
|
|
|
|
|
|
});
|
});
|
#$box->attach_defaults ($dev_table, 0, 1, 0, 1);#$box->pack_start( $dev_table, FALSE, FALSE, 3);
|
#$box->attach_defaults ($dev_table, 0, 1, 0, 1);#$box->pack_start( $dev_table, FALSE, FALSE, 3);
|
#$box->show_all;
|
#$box->show_all;
|
Line 618... |
Line 666... |
print FILE Data::Dumper->Dump([\%$intfc_gen],["HashRef"]);
|
print FILE Data::Dumper->Dump([\%$intfc_gen],["HashRef"]);
|
close(FILE) || die "Error closing file: $!";
|
close(FILE) || die "Error closing file: $!";
|
#store \%$intfc_gen, "lib/$name.ITC";
|
#store \%$intfc_gen, "lib/$name.ITC";
|
my $message="Interface $name has been generated successfully" ;
|
my $message="Interface $name has been generated successfully" ;
|
message_dialog($message);
|
message_dialog($message);
|
|
exec($^X, $0, @ARGV);# reset ProNoC to apply changes
|
#$hashref = retrieve('file');
|
#$hashref = retrieve('file');
|
}else{
|
}else{
|
my $message="Category must be defined!";
|
my $message="Category must be defined!";
|
message_dialog($message);
|
message_dialog($message);
|
|
|
Line 665... |
Line 714... |
|
|
}
|
}
|
|
|
|
|
|
|
|
sub load_interface{
|
|
my ($intfc_gen,$soc_state)=@_;
|
|
my $file;
|
|
my $dialog = Gtk2::FileChooserDialog->new(
|
|
'Select a File', undef,
|
|
'open',
|
|
'gtk-cancel' => 'cancel',
|
|
'gtk-ok' => 'ok',
|
|
);
|
|
|
|
my $filter = Gtk2::FileFilter->new();
|
|
$filter->set_name("ITC");
|
|
$filter->add_pattern("*.ITC");
|
|
$dialog->add_filter ($filter);
|
|
my $dir = Cwd::getcwd();
|
|
$dialog->set_current_folder ("$dir/lib/interface") ;
|
|
|
|
|
|
if ( "ok" eq $dialog->run ) {
|
|
$file = $dialog->get_filename;
|
|
my ($name,$path,$suffix) = fileparse("$file",qr"\..[^.]*$");
|
|
if($suffix eq '.ITC'){
|
|
$intfc_gen->intfc_set_interface_file($file);
|
|
set_state($soc_state,"load_file",0);
|
|
}
|
|
}
|
|
$dialog->destroy;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
############
|
############
|
# main
|
# main
|
Line 679... |
Line 759... |
|
|
my $soc_state= def_state("ideal");
|
my $soc_state= def_state("ideal");
|
# main window
|
# main window
|
#my $window = def_win_size(1000,800,"Top");
|
#my $window = def_win_size(1000,800,"Top");
|
# The main table containg the lib tree, selected modules and info section
|
# The main table containg the lib tree, selected modules and info section
|
my $main_table = Gtk2::Table->new (15, 12, TRUE);
|
my $main_table = Gtk2::Table->new (15, 12, FALSE);
|
|
|
# The box which holds the info, warning, error ... mesages
|
# The box which holds the info, warning, error ... mesages
|
my ($infobox,$info)= create_text();
|
my ($infobox,$info)= create_text();
|
|
|
|
|
Line 704... |
Line 784... |
|
|
$main_table->attach_defaults ($devbox , 0, 12, 0,12);
|
$main_table->attach_defaults ($devbox , 0, 12, 0,12);
|
$main_table->attach_defaults ($infobox , 0, 12, 12,14);
|
$main_table->attach_defaults ($infobox , 0, 12, 12,14);
|
$main_table->attach_defaults ($genbox , 6, 8, 14,15);
|
$main_table->attach_defaults ($genbox , 6, 8, 14,15);
|
|
|
|
|
|
my $open = def_image_button('icons/browse.png','Load Interface');
|
|
my $openbox=def_hbox(TRUE,0);
|
|
$openbox->pack_start($open, FALSE, FALSE,0);
|
|
$main_table->attach_defaults ($openbox,0, 2, 14,15);
|
|
|
#check soc status every 0.5 second. referesh gui if there is any changes
|
#check soc status every 0.5 second. referesh gui if there is any changes
|
Glib::Timeout->add (100, sub{
|
Glib::Timeout->add (100, sub{
|
|
|
my ($state,$timeout)= get_state($soc_state);
|
my ($state,$timeout)= get_state($soc_state);
|
if ($timeout>0){
|
if ($timeout>0){
|
Line 731... |
Line 817... |
}
|
}
|
return TRUE;
|
return TRUE;
|
|
|
} );
|
} );
|
|
|
|
$open-> signal_connect("clicked" => sub{
|
|
load_interface($intfc_gen,$soc_state);
|
|
|
|
});
|
|
|
$generate-> signal_connect("clicked" => sub{
|
$generate-> signal_connect("clicked" => sub{
|
if( check_intfc($intfc_gen)) {generate_lib($intfc_gen);}
|
if( check_intfc($intfc_gen)) {
|
|
generate_lib($intfc_gen);
|
|
|
|
}
|
|
|
$refresh->clicked;
|
$refresh->clicked;
|
|
|
});
|
});
|
|
|