summaryrefslogtreecommitdiffstats
path: root/perl-install/harddrake/ui.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perl-install/harddrake/ui.pm')
-rw-r--r--perl-install/harddrake/ui.pm249
1 files changed, 0 insertions, 249 deletions
diff --git a/perl-install/harddrake/ui.pm b/perl-install/harddrake/ui.pm
deleted file mode 100644
index a8165d3ad..000000000
--- a/perl-install/harddrake/ui.pm
+++ /dev/null
@@ -1,249 +0,0 @@
-package harddrake::ui;
-
-use strict;
-
-use harddrake::data;
-use harddrake::sound;
-use common;
-use ugtk qw(:helpers :wrappers :various);
-use my_gtk qw(:helpers :wrappers);
-use interactive;
-
-
-# { field => [ short_translation, full_description] }
-my %fields =
- (
- "Model" => [_("Model"), _("hard disk model")],
- "channel" => [_("Channel"), _("EIDE/SCSI channel")],
- "bus" =>
- [ _("Bus"),
- _("this is the physical bus on which the device is plugged (eg: PCI, USB, ...)")],
- "driver" => [ _("Module"), _("the module of the GNU/Linux kernel that handle that device")],
- "media_type" => [ _("Media class"), _("class of hardware device")],
- "description" => [ _("Description"), _("this field describe the device")],
- "bus_id" =>
- [ _("Bus identification"),
- _("- PCI and USB devices: this list the vendor, device, subvendor and subdevice PCI/USB ids")],
- "bus_location" =>
- [ _("Location on the bus"),
- _("- pci devices: this gives the PCI slot, device and function of this card
-- eide devices: the device is either a slave or a master device
-- scsi devices: the scsi bus and the scsi device ids")],
- "device" => [ _("Old device file"),
- _("old static device name used in dev package")],
- "devfs_device" => [ _("New devfs device"),
- _("new dinamic device name generated by incore kernel devfs")],
- "nbuttons" => [ _("Number of buttons"), "the number of buttons the mouse have"],
- "Vendor" => [ _("Vendor"), _("the vendor name of the device")],
- "alternative_drivers" => [ _("Alternative drivers"),
- _("the list of alternative drivers for this sound card")]
- );
-
-
-our $license = 'Copyright (C) 1999-2002 MandrakeSoft by tvignaud@mandrakesoft.com
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-';
-
-my ($in, %IDs, $pid, $w);
-
-my @menu_items = ( { path => _("/_File"), type => '<Branch>' },
- { path => _("/_File")._("/_Quit"), accelerator => _("<control>Q"), callback => \&quit_global },
- { path => _("/_Help"), type => '<Branch>' },
- { path => _("/_Help")._("/_Help..."), callback => sub {
- $in->ask_warn(_("Harddrake help"),
- _("Description of the fields:\n\n")
- . join("\n\n", map { "$fields{$_}[0]: $fields{$_}[1]"} keys %fields));
- }
- },
- { path => _("/_Help")._("/_Report Bug"),
- callback => sub { unless (fork) { exec("drakbug --report harddrake2 &") } } },
- { path => _("/_Help")._("/_About..."), callback => sub {
- $in->ask_warn(_("About Harddrake"),
- join ("", _("This is HardDrake, a Mandrake hardware configuration tool.\nVersion:"), " $harddrake::data::version\n",
- _("Author:"), " Thierry Vignaud <tvignaud\@mandrakesoft.com> \n\n" ,
- formatAlaTeX($license)));
- }
- },
- );
-
-sub new {
- my $sig_id;
- $in = 'interactive'->vnew('su', 'default');
- add_icon_path('/usr/share/pixmaps/harddrake2/');
- $w = my_gtk->new((_("Harddrake2 version ") . $harddrake::data::version));
- $w->{window}->set_usize(760, 550) unless $::isEmbedded;
- $w->{window}->add(
- my $main_vbox = gtkadd(gtkadd($::isEmbedded ? new Gtk::VBox(0, 0) :
- gtkadd(new Gtk::VBox(0, 0),
- my $menubar = ugtk::create_factory_menu($w->{rwindow}, @menu_items)),
- my $hpaned = new Gtk::HPaned),
- my $statusbar = new Gtk::Statusbar));
- $main_vbox->set_child_packing($statusbar, 0, 0, 0, 'start');
- if ($::isEmbedded) {
- $main_vbox->add(gtksignal_connect(my $but = new Gtk::Button(_("Quit")),
- 'clicked' => \&quit_global));
- $main_vbox->set_child_packing($but, 0, 0, 0, 'start');
- } else { $main_vbox->set_child_packing($menubar, 0, 0, 0, 'start') }
-
- $hpaned->pack1(gtkadd(new Gtk::Frame(_("Detected hardware")), createScrolledWindow(my $tree = new Gtk::CTree(1, 0))), 1, 1);
- $hpaned->pack2(my $vbox = gtkadd(gtkadd(gtkadd(new Gtk::VBox,
- gtkadd(new Gtk::Frame(_("Information")),
- gtkadd(new Gtk::HBox,
- createScrolledWindow(my $text = new Gtk::Text)))),
- my $module_cfg_button = new Gtk::Button(_("Configure module"))),
- my $config_button = new Gtk::Button(_("Run config tool"))), 1, 1);
- $vbox->set_child_packing($config_button, 0, 0, 0, 'start');
- $vbox->set_child_packing($module_cfg_button, 0, 0, 0, 'start');
-
- my $wait = $in->wait_message(_("Please wait"), _("Detection in progress"));
-
- my $cmap = Gtk::Gdk::Colormap->get_system;
- my $color = { 'red' => 0x3100, 'green' => 0x6400, 'blue' => 0xbc00 };
- $cmap->color_alloc($color);
- my $wcolor = { 'red' => 0xFFFF, 'green' => 0x6400, 'blue' => 0x6400 };
- $cmap->color_alloc($wcolor);
- $tree->set_column_auto_resize(0, 1);
- my $curr = $tree->node_nth(0); #- default value
- $tree->signal_connect( 'select_row', sub {
- my ( $ctree, $row, $column, $event ) = @_;
- my $node = $ctree->node_nth( $row );
- my ($name, undef) = $tree->node_get_pixtext($node,0);
- my $data = $tree->{data}{$name};
-
- if ($data) {
- $text->hide;
- $text->backward_delete($text->get_point);
- foreach my $i (sort keys %$data) {
- $text->insert("", $text->style->black, "", ($fields{$i}[0] ? $fields{$i}[0] : $i) . ": ");
- if ($i eq 'driver' && $data->{$i} eq 'unknown') {
- $text->insert("", $wcolor, "", "$data->{$i}\n\n");
- } else { $text->insert("", $color, "", "$data->{$i}\n\n") }
- }
- disconnect($module_cfg_button, 'module');
- if (exists $data->{driver} && $data->{driver} !~ /(unknown|.*\|.*)/ && $data->{driver} !~ /^Card:/) {
- $module_cfg_button->show;
- $IDs{module} = $module_cfg_button->signal_connect(clicked => sub {
- require modules;
- modules::mergein_conf('/etc/modules.conf');
- my %conf = modules::get_parameters($data->{driver});
- require modparm;
- my @l;
- foreach (modparm::parameters($data->{driver})) {
- my ($name, $format, $description) = @$_;
- push @l, { label => $name, help => "$description\n[$format]", val => \$conf{$name} };
- }
- if ($in->ask_from("Module configuration", _("You can configure each parameter of the module here."), \@l)) {
- my $options = join(' ', map { if_($conf{$_}, "$_=$conf{$_}") } keys %conf);
- if ($options) {
- modules::set_options($_->{driver}, $options);
- modules::write_conf;
- }
- }
- gtkset_mousecursor_normal();
- });
- }
- disconnect($config_button, 'tool');
- $text->show;
- my $configurator = $tree->{configurator}{$name};
-
- return unless -x $configurator;
- $IDs{tool} = $config_button->signal_connect(clicked => sub {
- return if defined $pid;
- if ($pid = fork()) {
- $sig_id = $statusbar->push($statusbar->get_context_id("id"), _("Running \"%s\" ...", $configurator));
- } else { exec($configurator) or die "$configurator missing\n" }
- }) ;
- $config_button->show;
- } else {
- $text->backward_delete($text->get_point); # erase all previous text
- $config_button->hide;
- $module_cfg_button->hide;
- }
- });
-
- foreach (@harddrake::data::tree) {
- my ($Ident, $title, $icon, $configurator, $detector) = @$_;
- next if (ref($detector) ne "CODE"); #skip class witouth detector
- print _("Probing %s class\n", $Ident);
- next if $Ident =~ /(MODEM|PRINTER)/ && "@ARGV" =~ /test/;
- my @devices = &$detector;
- next if (!listlength(@devices)); # Skip empty class (no devices)
- my $hw_class_tree = $tree->insert_node(undef, undef, [$title], 5, (gtkcreate_png($icon)) x 2, 0, ($title =~ /Unknown/ ? 0 : 1));
- my $prev_item;
- foreach (@devices) {
- if (exists $_->{bus} && $_->{bus} eq "PCI") {
- my $i = $_;
- $_->{bus_id} = join ':', map { if_($i->{$_} ne "65535", sprintf("%lx", $i->{$_})) } qw(vendor id subvendor subid);
- $_->{bus_location} = join ':', map { sprintf("%lx", $i->{$_} ) } qw(pci_bus pci_device pci_function);
- }
- # split description into manufacturer/description
- ($_->{Vendor}, $_->{description}) = split(/\|/,$_->{description}) if exists $_->{description};
-
- if (exists $_->{val}) { # Scanner ?
- my $val = $_->{val};
- ($_->{Vendor},$_->{description}) = split(/\|/, $val->{DESCRIPTION});
- }
- # EIDE detection incoherency:
- if (exists $_->{bus} && $_->{bus} eq 'ide') {
- $_->{channel} = _($_->{channel} ? "secondary" : "primary");
- delete $_->{info};
- } elsif ((exists $_->{id}) && ($_->{bus} ne 'PCI')) {
- # SCSI detection incoherency:
- my $i = $_;
- $_->{bus_location} = join ':', map { sprintf("%lx", $i->{$_} ) } qw(bus id);
- }
- if ($Ident eq "AUDIO") {
- my $alter = harddrake::sound::get_alternative($_->{driver});
- $_->{alternative_drivers} = join(':', @$alter) if $alter->[0] ne 'unknown';
- }
- foreach my $i (qw(vendor id subvendor subid pci_bus pci_device pci_function MOUSETYPE XMOUSETYPE unsafe val devfs_prefix wacom auxmouse)) { delete $_->{$i} }
- $_->{device} = '/dev/'.$_->{device} if exists $_->{device};
- my $custom_id = harddrake::data::custom_id($_, $title);
- $custom_id .= ' ' while exists($tree->{data}{$custom_id});
- my $hw_item = $tree->insert_node($hw_class_tree, $prev_item, [$custom_id ], 5, (undef) x 4, 1, 0);
- $tree->set_row_data($hw_item, [data => $_, configurator => $configurator ]);
- $tree->{data}{$custom_id} = $_;
- $tree->{configurator}{$custom_id} = $configurator;
- $prev_item = $hw_item;
- }
- }
- $SIG{CHLD} = sub { undef $pid; $statusbar->pop($sig_id) };
- $w->{rwindow}->signal_connect (delete_event => \&quit_global);
- undef $wait;
- gtkset_mousecursor_normal();
- $w->{rwindow}->set_position('center') unless $::isEmbedded;
- $w->{rwindow}->show_all();
- foreach ($module_cfg_button, $config_button) { $_->hide };
- $w->main;
-}
-
-
-sub quit_global {
- kill(15, $pid) if ($pid);
- $w->{rwindow}->destroy;
- $in->exit;
-}
-
-sub disconnect {
- my ($button, $id) = @_;
- if ($IDs{$id}) {
- $button->signal_disconnect($IDs{$id});
- $button->hide;
- undef $IDs{$id};
- }
-}
-
-1;