# -*- perl -*- use strict; use Wizard::State (); use Wizard::SaveAble (); use Wizard::Examples::ISDN::Config (); package Wizard::Examples::ISDN; @Wizard::Examples::ISDN::ISA = qw(Wizard::Examples); $Wizard::Examples::ISDN::VERSION = '0.01'; sub GetKey { 'prefs'; }; sub init { my $self = shift; my $prefs = $self->{'prefs'} || die "Missing preferences"; return ($prefs) unless shift; my $cfile = $prefs->{'isdn-prefs-cfile'} || die "Missing config file"; wantarray ? ($prefs, $cfile) : $prefs; } sub Action_Reset { my($self, $wiz) = @_; # Load prefs, if required. unless ($self->{'prefs'}) { my $cfg = $Wizard::Examples::ISDN::Config::config; my $file = $cfg->{'isdn-prefs-file'}; $self->{'prefs'} = Wizard::SaveAble->new('file' => $file, 'load' => 1); $self->Store($wiz); } # Return the initial menu. (['Wizard::Elem::Title', 'value' => 'ISDN Wizard Menu'], ['Wizard::Elem::Submit', 'value' => 'ISDN Wizard preferences', 'name' => 'Wizard::Examples::ISDN::Action_Preferences', 'id' => 1], ['Wizard::Elem::Submit', 'value' => 'ISDN Settings Wizard', 'name' => 'Wizard::Examples::ISDN::Settings::Action_Reset', 'id' => 2], ['Wizard::Elem::BR'], ['Wizard::Elem::Submit', 'value' => 'Return to Wizard Examples', 'name' => 'Wizard::Examples::Action_Reset', 'id' => 98], ['Wizard::Elem::Submit', 'value' => 'Exit ISDN Wizard', 'id' => 99]); } sub Action_Preferences { my($self, $wiz) = @_; my $prefs = $self->init(); # Return a list of input elements. (['Wizard::Elem::Title', 'value' => 'ISDN Wizard Preferences'], ['Wizard::Elem::Text', 'name' => 'isdn-prefs-cfile', 'value' => $prefs->{'isdn-prefs-cfile'}, 'descr' => 'ISDN Configfile'], ['Wizard::Elem::Text', 'name' => 'isdn-prefs-updatecmd', 'value' => $prefs->{'isdn-prefs-updatecmd'}, 'descr' => 'Command that will be executed on update'], ['Wizard::Elem::Submit', 'name' => 'Action_PreferencesSave', 'value' => 'Save these settings', 'id' => 1], ['Wizard::Elem::Submit', 'name' => 'Action_PreferencesReset', 'value' => 'Reset this form', 'id' => 98], ['Wizard::Elem::Submit', 'name' => 'Action_Reset', 'value' => 'Return to top menu', 'id' => 99]); } sub Action_PreferencesSave { my($self, $wiz) = @_; my $prefs = $self->init(); foreach my $opt (qw(isdn-prefs-cfile isdn-prefs-updatecmd)) { $prefs->{$opt} = $wiz->param($opt) if defined($wiz->param($opt)); } $prefs->Modified(1); $self->Store($wiz, 1); $self->Action_Reset($wiz); } sub Action_PreferencesReset { my($self, $wiz) = @_; $self->Action_Reset($wiz); $self->Action_Preferences($wiz); } 1;