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; }