OpenCores
URL https://opencores.org/ocsvn/an-fpga-implementation-of-low-latency-noc-based-mpsoc/an-fpga-implementation-of-low-latency-noc-based-mpsoc/trunk

Subversion Repositories an-fpga-implementation-of-low-latency-noc-based-mpsoc

[/] [an-fpga-implementation-of-low-latency-noc-based-mpsoc/] [trunk/] [mpsoc/] [perl_gui/] [ProNoC.pl] - Rev 17

Go to most recent revision | Compare with Previous | Blame | View Log

#!/usr/bin/perl -w
 
use Glib qw/TRUE FALSE/;
 
 
use Gtk2;
use strict;
use warnings;
#use Image::Base::Gtk2::Gdk::Pixbuf;
 
use lib 'lib/perl';
require "widget.pl"; 
require "interface_gen.pl";
require "ip_gen.pl";
require "soc_gen.pl";
require "mpsoc_gen.pl";
require "noc_sim.pl";
 
#use PDF::API2;
 
 
 
sub set_deafualt_font{
	my($width,$hight)=@_;
	#print "($width,$hight)\n";
	my $font_size;
	if($width>1600){
	    $font_size=10;
		Gtk2::Rc->parse_string(<<__);
			style "normal" { 
				font_name ="Verdana 10" 
			}
			widget "*" style "normal"
__
 
	}
	elsif ($width>1400){
		$font_size=9;
		Gtk2::Rc->parse_string(<<__);
		style "normal" { 
				font_name ="Verdana 9" 
			}
			widget "*" style "normal"
__
 
	}
	elsif ($width>1200){
		$font_size=8;
		Gtk2::Rc->parse_string(<<__);
		style "normal" { 
				font_name ="Verdana 8" 
			}
			widget "*" style "normal"
__
 
	}
	elsif ($width>1000){
	    $font_size=7;
		Gtk2::Rc->parse_string(<<__);
		style "normal" { 
				font_name ="Verdana 7" 
			}
			widget "*" style "normal"
__
 
	}
	else{
	    $font_size=6;
		Gtk2::Rc->parse_string(<<__);
		style "normal" { 
				font_name ="Verdana 6" 
			}
			widget "*" style "normal"
__
 
	}
	#print "	    \$font_size=	    $font_size\n";
	return 	    $font_size;
 
 
}
 
sub get_mpsoc{
	my ($ipgen,$soc_state,$info)=@_;
	my $description = "Will be available soon!";
	my $table = Gtk2::Table->new (15, 15, TRUE);
	#my $window=def_popwin_size(500,500,"Add description");
	my ($scrwin,$text_view)=create_text();
	#my $buffer = $textbox->get_buffer();
	my $ok=def_image_button("icons/select.png",' Ok ');
 
	$table->attach_defaults($scrwin,0,15,0,14);
	$table->attach_defaults($ok,6,9,14,15);
	my $text_buffer = $text_view->get_buffer;
	if(defined $text_buffer) {$text_buffer->set_text($description)};
 
	$ok->signal_connect("clicked"=> sub {
 
		my $text = $text_buffer->get_text($text_buffer->get_bounds, TRUE);
		# $ipgen->ipgen_set_description($text);	
		print "$text\n";
 
	});
 
	#$window->add($table);
	#$window->show_all();
	return $table;
 
}	
 
 
 
 
sub main{
 
 
 
my $notebook = Gtk2::Notebook->new;
#$hbox->pack_start ($notebook, TRUE, TRUE, 0);
 
my($width,$hight)=max_win_size();
set_deafualt_font_size();
 
 
 
my $intfc_gen=  intfc_main();
$notebook->append_page ($intfc_gen,Gtk2::Label->new_with_mnemonic ("_Interface generator"));
 
my $ipgen=ipgen_main();
$notebook->append_page ($ipgen,Gtk2::Label->new_with_mnemonic ("_IP generator"));
 
my $socgen=socgen_main();			
$notebook->append_page ($socgen,Gtk2::Label->new_with_mnemonic ("_Processing tile generator"));
 
my $mpsocgen =mpsocgen_main();
$notebook->append_page ($mpsocgen,Gtk2::Label->new_with_mnemonic ("_NoC based MPSoC generator"));	
 
 
 
 
 
		my $scrolled_win = new Gtk2::ScrolledWindow (undef, undef);
		$scrolled_win->set_policy( "automatic", "automatic" );
		$scrolled_win->add_with_viewport($notebook);	
 
		my $window = def_win_size($width-100,$hight-100,"ProNoC");
		#$window->add($scrolled_win);
 
 
		my $navIco = Gtk2::Gdk::Pixbuf->new_from_file("./icons/ProNoC.png");         # advance1.png");  
		$window->set_default_icon($navIco); 
 
 
 
 
 
 
 
 
		my @entries = (
        ### Everything falls under the following 3 rows ###
        [ 'FileMenu',       undef, '_File' ],
        [ 'ViewMenu',       undef, '_View' ],
        [ 'HelpMenu',       undef, '_Help' ],
 
        # Quit
        [   'Exit',           'gtk-quit',
            'E_xit', '<control>X',
            undef,      sub { Gtk2->main_quit },
            FALSE
        ],
        # About
        [   'About',                          'gtk-about',
            '_About',                           '<control>A',
            undef,      \&about,
            FALSE
        ],
 
	 # intf_gen help
        [   'interface generator',                          'gtk-about',
            '_Interface generator',                           'F1',
            undef,      \&intfc_help,
            FALSE
        ],
	 # ip_gen help
        [   'ip generator',                          'gtk-about',
            '_IP generator',                           'F2',
            undef,      \&ip_help,
            FALSE
        ],
	 # pt_gen help
        [   'pt generator',                          'gtk-about',
            '_Processing tile generator',                           'F3',
            undef,      \&pt_help,
            FALSE
        ],
);
 
    my $ui_info = "<ui>
        <menubar name='MenuBar'>
         <menu action='FileMenu'>
          <separator/>
          <menuitem action='Exit'/>
         </menu>
          <menu action='ViewMenu'>
         </menu>
         <menu action='HelpMenu'>
          <menuitem action='About'/>
	  <menuitem action='interface generator'/>
	  <menuitem action='ip generator'/>
	  <menuitem action='pt generator'/>
 
         </menu>
        </menubar>
</ui>";
 
    my $actions = Gtk2::ActionGroup->new('Actions');
    $actions->add_actions( \@entries, undef );
 
    my $ui = Gtk2::UIManager->new;
    $ui->insert_action_group( $actions, 0 );
 
    $window->add_accel_group( $ui->get_accel_group );
    $ui->add_ui_from_string($ui_info);
   my $vbox = Gtk2::VBox->new( FALSE, 0 );
    $vbox->pack_start( $ui->get_widget('/MenuBar'), FALSE, FALSE, 0 );
    $vbox->pack_end( $scrolled_win, TRUE, TRUE,10 );
 
$window->add($vbox);
 
 
 
 
		$window->set_resizable (1);
		$window->show_all();
 
 
 
 
 
 
 
 
 
}			
 
 
 
sub about {
    my $about = Gtk2::AboutDialog->new;
    $about->set_authors("Alireza Monemi\n Email: alirezamonemi\@opencores.org");
    $about->set_version( '1.0' );
    $about->set_website('http://opencores.org/project,an-fpga-implementation-of-low-latency-noc-based-mpsoc');
    $about->set_comments('NoC based MPSoC generator.');
    $about->set_license(
                 "This program is free software; you can redistribute it\n"
                . "and/or modify it under the terms of the GNU General \n"
		. "Public License as published by the Free Software \n"
		. "Foundation; either version 1, or (at your option)\n"
		. "any later version.\n\n"
 
        );
    $about->run;
    $about->destroy;
    return;
}
 
sub intfc_help{
    my $dir = Cwd::getcwd();
    my $help="$dir/doc/interface_gen.pdf";	
    system qq (xdg-open $help);
    return;
 
}
 
sub ip_help{ 
    my $dir = Cwd::getcwd();
    my $help="$dir/doc/ip_gen.pdf";	
    system qq (xdg-open $help);
    return;
}
 
 
 
sub pt_help{ 
    my $dir = Cwd::getcwd();
    my $help="$dir/doc/pt-gen.pdf";	
    system qq (xdg-open $help);
    return;
}
 
 
 
 
Gtk2->init;
main;
Gtk2->main();
 

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.