#!/usr/bin/perl use strict; use lib qw(/usr/lib/libDrakX); use common; # we need ugtk2 to build a gtk2 interface easily use ugtk2 qw(:all); # we need this so that libconf can generate GUI use Libconf::GUI::Gtk2 qw(:generators :builders); use Libconf::System::Network; # for debugging purpose use Data::Dumper; # we ask systemconf to give us the structure representing the global network config my $sys_network = new Libconf::System::Network(); # we build the window my $window = Gtk2::Window->new('toplevel'); $window->signal_connect(delete_event => sub { ugtk2->exit(0) }); $window->set_position('center'); $window->set_title(N('LAN configuration')); $window->set_size_request(640, 480); $window->set_border_width(5); my $button_box = Gtk2::HButtonBox->new; $button_box->set_spacing_default(5); gtkadd($window, gtkpack_(Gtk2::VBox->new(0,5), 1, my $main_notebook = new Gtk2::Notebook, 0, gtkadd(gtkset_layout($button_box, 'end'), gtksignal_connect(new Gtk2::Button(N("Apply")), clicked => sub { save(); }), gtksignal_connect(new Gtk2::Button(N("Cancel")), clicked => sub { cancel_exit(); }), gtksignal_connect(new Gtk2::Button(N("OK")), clicked => sub { save_exit(); }), ), ) ); $main_notebook->append_page(my $global_notebook = new Gtk2::Notebook, Gtk2::Label->new(N('Global parameters'))); $global_notebook->set_tab_pos('right'); $global_notebook->append_page(gtkpack_(gtkset_border_width(Gtk2::VBox->new(0,5), 5), 0, gtkadd(new Gtk2::Frame(N('General network parameters')), gtkpack__(gtkset_border_width(Gtk2::VBox->new(0,5), 5), getBestWidget($sys_network->{general}, '{NETWORKING}', N('Activate networking')), gtkpack__(Gtk2::HBox->new(0,5), 'Hostname : ', getBestWidget($sys_network->{general}, N('{HOSTNAME}'))), gtkpack__(Gtk2::HBox->new(0,5), 'Gateway : ', getBestWidget($sys_network->{general}, N('{GATEWAY}'))), gtkpack__(Gtk2::HBox->new(0,5), 'Gateway device : ', getBestWidget($sys_network->{general}, N('{GATEWAYDEV}'))), gtkpack__(Gtk2::HBox->new(0,5), 'NIS domain : ', getBestWidget($sys_network->{general}, N('{NISDOMAIN}'))), getBestWidget($sys_network->{general}, '{FORWARD_IPV4}', N('Forward IPV4')), getBestWidget($sys_network->{general}, '{DEFRAG_IPV4}', N('Defrag IPV4')), getBestWidget($sys_network->{general}, '{VLAN}', 'Virtual LAN'), ), ), ), Gtk2::Label->new(N('General')), ); $global_notebook->append_page(gtkpack_(gtkset_border_width(Gtk2::VBox->new(0,5), 5), 0, gtkadd(new Gtk2::Frame(N('IPX')), gtkpack__(gtkset_border_width(Gtk2::VBox->new(0,5), 5), getBestWidget($sys_network->{general}, '{IPX}', N('Activate IPX')), gtkpack__(Gtk2::HBox->new(0,5), 'IPX Auto primary : ', getBestWidget($sys_network->{general}, N('{IPXAUTOPRIMARY}'))), gtkpack__(Gtk2::HBox->new(0,5), 'IPX Auto frame : ', getBestWidget($sys_network->{general}, N('{IPXAUTOFRAME}'))), gtkpack__(Gtk2::HBox->new(0,5), 'IPX internal net num : ', getBestWidget($sys_network->{general}, N('{IPXINTERNALNODENUM}'))), gtkpack__(Gtk2::HBox->new(0,5), 'IPX internal node num : ', getBestWidget($sys_network->{general}, N('{IPXINTERNALNODENUM}'))), gtkpack__(Gtk2::HBox->new(0,5), 'IFPLUGD args : ', getBestWidget($sys_network->{general}, N('{IFPLUGD_ARGS}'))), ), ), ), Gtk2::Label->new(N('IPX')), ); $global_notebook->append_page(gtkpack_(gtkset_border_width(Gtk2::VBox->new(0,5), 5), 0, gtkadd(new Gtk2::Frame(N('IPV6')), gtkpack__(gtkset_border_width(Gtk2::VBox->new(0,5), 5), getBestWidget($sys_network->{general}, '{NETWORKING_IPV6}', N('Activate IPV6')), getBestWidget($sys_network->{general}, '{IPV6FORWARDING}', N('IPV6 Forwarding')), getBestWidget($sys_network->{general}, '{IPV6INIT}', N('IPV6 Init')), getBestWidget($sys_network->{general}, '{IPV6_AUTOCONF}', N('IPV6 Autoconf')), getBestWidget($sys_network->{general}, '{IPV6_ROUTER}', N('IPV6 Router')), getBestWidget($sys_network->{general}, '{IPV6_AUTOTUNNEL}', N('IPV6 Autotunnel')), gtkpack__(Gtk2::HBox->new(0,5), 'IPV6 Default gateway : ', getBestWidget($sys_network->{general}, N('{IPV6_DEFAULTGW}'))), gtkpack__(Gtk2::HBox->new(0,5), 'IPV6 Default device : ', getBestWidget($sys_network->{general}, N('{IPV6_DEFAULTDEV}'))), gtkpack__(Gtk2::HBox->new(0,5), 'IPV6 Radvd pidfile : ', getBestWidget($sys_network->{general}, N('{IPV6_RADVD_PIDFILE}'))), gtkpack__(Gtk2::HBox->new(0,5), 'IPV6 to IPV4 Radvd pidfile : ', getBestWidget($sys_network->{general}, N('{IPV6TO4_RADVD_PIDFILE}'))), gtkpack__(Gtk2::HBox->new(0,5), 'IPV6 Radvd trigger action : ', getBestWidget($sys_network->{general}, N('{IPV6_RADVD_TRIGGER_ACTION}'))), ), ), ), Gtk2::Label->new(N('IPV6')), ); # we make everything visible in the window $window->show_all(); #and we start the Gtk2 main loop. Gtk2->main;