Project D.U.I.M

Database User Interface Modules.
This is a set of Perl/Tk/DBI modules to build easy and fast database applications.


Sourceforge project: ProjectDUIM

Below example screenshots with demo code. The compleet code can be found in ProjectDUIM.pl.

Login screen
Login screen
# Login database
$login = Sw::SwTkLogin->new;
$login->SetData ( -tkparent => $WinMain
                , -title    => $GlobProgramName
                );
# The user login
# It it false the program stop (setting)
$dbh = $login->Login ;

Main window
Main window
# It uses the modules:
Sw::SwTkMenu     ; # Menubar
Sw::SwTkStatusBar; # Status bar
Sw::SwTkMenbarMnt; # Maintain buttonbar

Example can be found in ProjectDUIM.pl

Maintain table
Maintain table
# First define the table
$table = Sw::SwDbTable->new();

$table->SetTableName( $dbh, 'example' );
$table->AddKeyFields(  'code'       , 'varchar(8)'  );
$table->AddDataFields( 'description', 'varchar(30)' );
$table->AddDataFields( 'memotext'   , 'text'        );

# Second, define the maintain object
$maint = Sw::SwTkDbMntSm->new();
$maint->SetData( -swdbtable => $table
               , -tkparent  => $WinMain
               , -title     => 'Maintain example table'
               );
$maint->SetFieldData( -name       => 'code'
                    , -length     => 8
                    , -label      => 'Code'
                    );
$maint->SetFieldData( -name       => 'description'
                    , -length     => 30
                    , -label      => 'Description'
                    );
$maint->SetFieldData( -name       => 'memotext'
                    , -length     => 60
                    , -label      => 'Memo'
                    , -heightview => 8
                    );
# Create all
$maint->CreateAll;
$maint->Maintain ;

Browser
Browser
# First define the table
$tabbrow = Sw::SwDbTable->new();
$tabbrow->SetTableName( $dbh, 'example' );
$tabbrow->AddKeyFields(  'code'       , 'varchar(8)'  );
$tabbrow->AddDataFields( 'description', 'varchar(30)' );

# Define a browser
$browser = Sw::SwTkDbBrowse->new();
$browser->SetData( -title        => 'Example'
                 , -browsesearch => 1
                 , -swdbtable    => $tabbrow
                 );
$browser->SetFieldData( -name    => 'code'
                      , -length  => 8
                      , -label   => 'Code'
                      );
$browser->SetFieldData( -name    => 'description'
                      , -length  => 30
                      , -label   => 'Description'
                      );
# Link browser to field
$maint->SetFieldData( -name         => 'code'
                    , -swtkdbbrowse => $browser
                    );

Report
Report
# Define report
$objreport = Sw::SwTkDbRptSm->new;
$objreport->SetData( -title     => 'Report table example'
                   , -dbi       => $dbh
                   , -tkparent  => $WinMain
                   , -tablename => 'example'
                   );
$objreport->SetFieldRange( -name         => 'code'
                         , -length       => 8
                         , -label        => 'Code'
                         );
$objreport->SetFieldDisplay( 'code'       , 'Code'       , 'varchar(8)'  );
$objreport->SetFieldDisplay( 'description', 'Description', 'varchar(30)' );
$objreport->SetFieldDisplay( 'memotext'   , 'Memo'       , 'text'        );

# Create all
$objreport->CreateAll    ;
$objreport->ActiveModule ;

SQLViewer
SQLViewer
$maint = Sw::SwTkDbSqlView->new ;

$maint->SetData( -dbi       => $dbh
               , -tkparent  => $WinMain
               );
$maint->CreateAll;
$maint->ActiveModule;

Settings
Settings
$maint = Sw::SwTkSettings->new ;
$maint->SetData( -tkparent    => $WinMain
               , -settingfile => $GlobSetName
               );
$maint->SetFieldData (  'login'      , 'database'  ,  -length =>  80 , -label => 'Database'  );
$maint->SetFieldData (  'login'      , 'user'      ,  -length =>  32 , -label => 'User'      );
$maint->SetFieldData (  'window'     , 'center'    ,                   -label => 'Center windows' , -typedisp => 'Checkbutton' );
$maint->SetFieldData (  'window'     , 'tabfolders',                   -label => 'Tabfolders'     , -typedisp => 'Checkbutton' );
$maint->SetFieldData (  'projectduim', 'font'      ,  -length => 132 , -label => 'Font'           , -lengthview => 80 );
$maint->SetFieldData (  'window'     , 'butside'   ,                 , -label => 'Side buttonbar' , -typedisp => 'Optionmenu' , -options => [ 'top', 'right', 'bottom', 'left' ] );
$maint->SetFieldData (  'report'     , 'exportprog',  -length =>  80 , -label => 'Export application'  );

$maint->CreateAll;
$maint->ActiveModule;