my $mw = MainWindow->new();
$mw->geometry("600x400+30+30");
my $nb = $mw->NoteBook()->pack(-expand => 1, -fill => 'both', -padx => '20', -pady => '30');
# Page 1
my $p1 = $nb->add('page1', -label => 'Users');
&doUserPageUi($p1, $dbh);
# Page 2
my $p2 = $nb->add('page2', -label => 'Sources');
# Page 3
my $p3 = $nb->add('page3', -label => 'Projects');
# Page 4
my $p4 = $nb->add('page4', -label => 'Import');
# Page 5
my $p5 = $nb->add('page5', -label => 'Pull List');
####
sub doUserPageUi {
my ($pg, $dbh) = @_;
my @listnames;
$pg->Label(-text => 'Username', -justify => 'right', -width => '20')
->grid(my $user_list = $p1->BrowseEntry(-variable => \$state->{srcUname}, -browsecmd => \&doUserSearch, -width => '20'), -sticky => 'w', -pady => '20');
$pg->Label(-text => 'First Name', -justify => 'right', -width => '20')
->grid($p1->LabEntry(-textvariable => \$user->{firstname}, -width => '20'), -sticky => 'w', -pady => '5');
$pg->Label(-text => 'Last Name', -justify => 'right', -width => '20')
->grid($p1->LabEntry(-textvariable => \$user->{lastname}, -width => '20'), -sticky => 'w', -pady => '5');
$pg->Label(-text => 'Password', -justify => 'right', -width => '20')
->grid($p1->LabEntry(-textvariable => \$user->{password}, -width => '20'), -sticky => 'w', -pady => '5');
$pg->Button(-text => 'Save/Update', -command => \&doUserUpdate)->grid(-columnspan => '2', -pady => '30');
my $SQL = "SELECT username FROM user;";
debug("SQL = $SQL");
my $sth = $dbh->prepare( $SQL ) or die $DBI::errstr;
my $exec = $sth->execute;
debug("Prepare result: $exec");
while ( my ($username) = $sth->fetchrow_array() ) {
push @listnames, $username;
debug("Username: $username");
}
$sth->finish;
debug("@listnames");
$user_list->insert('end', @listnames);
return;
}
####
sub doUserSearch {
debug("+doUserSearch");
my $uname = $state->{srcUname};
debug("$uname");
my $SQL = "SELECT username, firstname, lastname, password FROM user WHERE username =\'$uname\'";
my $sth = $dbh->prepare( $SQL );
$sth->execute;
my $in = $sth->fetchrow_hashref;
if ( $in->{username} ne $uname ) {
# user does not exist so clear values and set up a new username value.
$user->{firstname} = "";
$user->{lastname} = "";
$user->{password} = "";
$user->{username} = $uname;
} else {
$user->{firstname} = $in->{firstname};
$user->{lastname} = $in->{lastname};
$user->{password} = $in->{password};
$user->{username} = $in->{username};
}
debug("$user->{username} $user->{firstname} $user->{lastname} $user->{password}");
$nb->raise('page1');
debug("-doUserSearch");
}
####
# Save updated information to database
sub doUserUpdate {
if ($state->{srcUname}) {
my $sth = $dbh->prepare( "REPLACE INTO user (username, firstname, lastname, password) VALUES (?, ?, ?, ?);");
$sth->execute( $user->{username}, $user->{firstname}, $user->{lastname}, $user->{password} );
$user = ();
$state->{srcUname} = ();
$nb->raise('page1');
}
return;
}