#!/usr/bin/perl

use lib qw(/usr/lib/libDrakX);

use standalone;     #- warning, standalone must be loaded very first, for 'explanations'

use interactive;
use common;
use lang;
use any;

my ($klang, $kcountry, $apply);

foreach (@ARGV) {
    $apply = /--apply/;
    $klang = $1 if /--kde_lang=(.*)/;
    $kcountry = uc($1) if /--kde_country=(.*)/;
}

if (defined $klang) {
    $klang or exit(-1);
    my $lang = member($klang, lang::list_langs()) ? $klang : 'en_US';
    my $country = member($kcountry, lang::list_countries()) ? $kcountry : 'US';
    my $locale = lang::read($>);
    $klang and $locale->{lang} = $lang;
    $kcountry and $locale->{country} = $country;
    lang::write($locale, $>, 'dont_touch_kde_files') if $apply;

    #- help KDE defaulting to the right charset
    print lang::charset2kde_charset(lang::l2charset($lang)), "\n";
    exit(0);
}

my $locale = lang::read($>);
my $in = 'interactive'->vnew;

$ugtk2::wm_icon = "localedrake";
$::Wizard_title = N("LocaleDrake");

sub select_country() {
    any::selectCountry($in, $locale);  
}

eval {
    local $::isWizard = 1;
  language:
    # keep around previous settings so that any::selectLanguage can keep UTF-8 flag:
    local $::Wizard_no_previous = 1;
    my $old_lang = $locale->{lang};
    $in->{locale} = $locale;
    $locale->{lang} = any::selectLanguage($in, $locale->{lang});
    $locale->{IM} = lang::get_default_im($locale->{lang}) if $old_lang ne $locale->{lang};
    undef $::Wizard_no_previous;
    select_country() or goto language;
};
if ($@) {
    if ($@ =~ /^one lang only/) {
	select_country() or $in->exit(0);
    } elsif ($@ !~ /wizcancel/) {
	die;
    } else {
        $in->exit(0);
    }
}

lang::write($locale, $>);

my $msg = N("The change is done, but to be effective you must logout");
if (my $wm = $> && any::running_window_manager()) {
    $in->ask_yesorno('', $msg, 1)
      and any::ask_window_manager_to_logout($wm);
} else {
    $in->ask_warn('', $msg);
}