passwddlg.tcl

passwddlg.tcl
This file is part of Unifix BWidget Toolkit
by Stephane Lavirotte (Stephane.Lavirotte@sophia.inria.fr)
$Id: passwddlg.tcl,v 1.6 2001/09/06 19:50:41 andreas_kupries Exp $
Index of commands:
- PasswdDlg::create
- PasswdDlg::configure
- PasswdDlg::cget
- PasswdDlg::_verifonlogin
- PasswdDlg::_verifonpasswd
- PasswdDlg::_max


PasswdDlg
Comments  
Arguments  
Used by  
Uses  
namespace eval PasswdDlg {
    Dialog::use
    LabelEntry::use

    Widget::bwinclude PasswdDlg Dialog :cmd \
        remove     {-image -bitmap -side -default -cancel -separator} \
        initialize {-modal local -anchor c}
    
    Widget::bwinclude PasswdDlg LabelEntry .frame.lablog \
        remove [list -command -justify -name -show -side            \
        -state -takefocus -width -xscrollcommand -padx -pady    \
        -dragenabled -dragendcmd -dragevent -draginitcmd    \
        -dragtype -dropenabled -dropcmd -dropovercmd -droptypes    \
        ] \
        prefix [list login -editable -helptext -helpvar -label      \
        -text -textvariable -underline                \
        ] \
        initialize [list -relief sunken -borderwidth 2        \
        -labelanchor w -width 15 -loginlabel "Login"        \
        ]
    
    Widget::bwinclude PasswdDlg LabelEntry .frame.labpass        \
        remove [list -command -width -show -side -takefocus        \
        -xscrollcommand -dragenabled -dragendcmd -dragevent    \
        -draginitcmd -dragtype -dropenabled -dropcmd        \
        -dropovercmd -droptypes -justify -padx -pady -name    \
        ] \
        prefix [list passwd -editable -helptext -helpvar -label    \
        -state -text -textvariable -underline            \
        ] \
        initialize [list -relief sunken -borderwidth 2        \
        -labelanchor w -width 15 -passwdlabel "Password"    \
        ]
    
    Widget::declare PasswdDlg {
        {-type        Enum       ok           0 {ok okcancel}}
        {-labelwidth  TkResource -1           0 {label -width}}
        {-command     String     ""           0}
    }

    proc ::PasswdDlg { path args } { return [eval PasswdDlg::create $path $args] }
    proc use {} {}
}


PasswdDlg::_max
Comments Command PasswdDlg::_max
Arguments val1
val2
Used by  
Uses  
proc PasswdDlg::_max { val1 val2 } {
    return [expr {($val1 > $val2) ? ($val1) : ($val2)}]
}


PasswdDlg::_verifonlogin
Comments Command PasswdDlg::_verifonlogin
Arguments path
labpass
Used by  
Uses Dialog::setfocus
proc PasswdDlg::_verifonlogin { path labpass } {
    if { [$labpass.e cget -text] == "" } {
        focus $labpass
    } else {
        Dialog::setfocus $path default
    }
}


PasswdDlg::_verifonpasswd
Comments Command PasswdDlg::_verifonpasswd
Arguments path
lablog
Used by  
Uses Dialog::setfocus
proc PasswdDlg::_verifonpasswd { path lablog } {
    if { [$lablog.e cget -text] == "" } {
        focus $lablog
    } else {
        Dialog::setfocus $path default
    }
}


PasswdDlg::cget
Comments Command PasswdDlg::cget
Arguments path
option
Used by  
Uses Widget::cget
proc PasswdDlg::cget { path option } {
    return [Widget::cget "$path#PasswdDlg" $option]
}


PasswdDlg::configure
Comments Command PasswdDlg::configure
Arguments path
args
Used by  
Uses Widget::configure
proc PasswdDlg::configure { path args } {
    set res [Widget::configure "$path#PasswdDlg" $args]
}


PasswdDlg::create
Comments Command PasswdDlg::create
Arguments path
args
Used by  
Uses Widget::initFromODB
LabelEntry::create
Widget::cget
Dialog::create
Dialog::getframe
Dialog::draw
Widget::parseArgs
Bitmap::get
Dialog::add
proc PasswdDlg::create { path args } {

    array set maps [list PasswdDlg {} :cmd {} .frame.lablog {} \
        .frame.labpass {}]
    array set maps [Widget::parseArgs PasswdDlg $args]

    Widget::initFromODB PasswdDlg "$path#PasswdDlg" $maps(PasswdDlg)

    # Extract the PasswdDlg megawidget options (those that don't map to a
    # subwidget)
    set type      [Widget::cget "$path#PasswdDlg" -type]
    set cmd       [Widget::cget "$path#PasswdDlg" -command]

    set defb -1
    set canb -1
    switch -- $type {
        ok        { set lbut {ok}; set defb 0 }
        okcancel  { set lbut {ok cancel} ; set defb 0; set canb 1 }
    }

    eval Dialog::create $path $maps(:cmd) -class PasswdDlg \
        -image [Bitmap::get passwd] -side bottom -default $defb -cancel $canb
    foreach but $lbut {
        if { $but == "ok" && $cmd != "" } {
            Dialog::add $path -text $but -name $but -command $cmd
        } else {
            Dialog::add $path -text $but -name $but
        }
    }

    set frame [Dialog::getframe $path]
#    bind $path  <Return>  ""
    bind $frame <Destroy> "Widget::destroy $path#PasswdDlg"

    set lablog [eval LabelEntry::create $frame.lablog $maps(.frame.lablog) \
        -name login -dragenabled 0 -dropenabled 0 \
        -command \"PasswdDlg::_verifonpasswd $path $frame.labpass\"]

    set labpass [eval LabelEntry::create $frame.labpass $maps(.frame.labpass) \
        -name password -show "*" -dragenabled 0 -dropenabled 0 \
        -command \"PasswdDlg::_verifonlogin $path $frame.lablog\"]

    # compute label width -- TODO: this should probably not override the
    # cmdline arg
    set loglabel  [$lablog cget -label]
    set passlabel [$labpass cget -label]
    set labwidth  [_max [string length $loglabel] [string length $passlabel]]
    incr labwidth 1
    $lablog  configure -labelwidth $labwidth
    $labpass configure -labelwidth $labwidth

    proc ::$path { cmd args } "return \[eval PasswdDlg::\$cmd $path \$args\]"

    pack  $frame.lablog $frame.labpass -fill x -expand 1

    # added by bach@mwgdna.com
    #  give focus to loginlabel unless the state is disabled
    if {[$lablog cget -editable]} {
    focus $frame.lablog.e
    } else {
    focus $frame.labpass.e
    }
    set res [Dialog::draw $path]

    if { $res == 0 } {
        set res [list [$lablog.e cget -text] [$labpass.e cget -text]]
    } else {
        set res [list]
    }
    Widget::destroy "$path#PasswdDlg"
    destroy $path

    return $res
}
generated by zdoc.tcl on 2003-03-06 00:21:54