source: trunk/BWidget-1.2.1/passwddlg.tcl

Last change on this file was 931, checked in by toby, 11 years ago

include rest of files

File size: 6.7 KB
Line 
1# -----------------------------------------------------------------------------
2#  passwddlg.tcl
3#  This file is part of Unifix BWidget Toolkit
4#   by Stephane Lavirotte (Stephane.Lavirotte@sophia.inria.fr)
5#  $Id: passwddlg.tcl,v 1.5 1999/05/25 08:28:18 eric Exp $
6# -----------------------------------------------------------------------------
7#  Index of commands:
8#     - PasswdDlg::create
9#     - PasswdDlg::configure
10#     - PasswdDlg::cget
11#     - PasswdDlg::_verifonlogin
12#     - PasswdDlg::_verifonpasswd
13#     - PasswdDlg::_max
14#------------------------------------------------------------------------------
15
16namespace eval PasswdDlg {
17    Dialog::use
18    LabelEntry::use
19
20    Widget::bwinclude PasswdDlg Dialog "" \
21        remove     {-image -bitmap -side -default -cancel -separator} \
22        initialize {-modal local -anchor c}
23
24    Widget::bwinclude PasswdDlg LabelEntry .frame.lablog \
25        remove {
26            -command -editable -justify -name -show -side -state -takefocus
27            -width -xscrollcommand -padx -pady
28            -dragenabled -dragendcmd -dragevent -draginitcmd -dragtype
29            -dropenabled -dropcmd -dropovercmd -droptypes
30        } \
31        prefix     {login -helptext -helpvar -label -text -textvariable -underline} \
32        initialize {-relief sunken -borderwidth 2 -labelanchor w -width 15 -loginlabel "Login"}
33
34    Widget::bwinclude PasswdDlg LabelEntry .frame.labpass \
35        remove {
36            -command -width -show -side -takefocus -xscrollcommand
37            -dragenabled -dragendcmd -dragevent -draginitcmd -dragtype
38            -dropenabled -dropcmd -dropovercmd -droptypes -justify -padx -pady -name
39        } \
40        prefix {passwd -editable -helptext -helpvar -label -state -text -textvariable -underline} \
41        initialize {-relief sunken -borderwidth 2 -labelanchor w -width 15 -passwdlabel "Password"}
42
43    Widget::declare PasswdDlg {
44        {-type        Enum       ok           0 {ok okcancel}}
45        {-labelwidth  TkResource -1           0 {label -width}}
46        {-command     String     ""           0}
47    }
48
49    Widget::syncoptions PasswdDlg LabelEntry .frame.lablog  {
50        -logintext -text -loginlabel -label -loginunderline -underline
51    }
52    Widget::syncoptions PasswdDlg LabelEntry .frame.labpass {
53        -passwdtext -text -passwdlabel -label -passwdunderline -underline
54    }
55
56    proc ::PasswdDlg { path args } { return [eval PasswdDlg::create $path $args] }
57    proc use {} {}
58}
59
60
61# -----------------------------------------------------------------------------
62#  Command PasswdDlg::create
63# -----------------------------------------------------------------------------
64proc PasswdDlg::create { path args } {
65
66    Widget::init PasswdDlg "$path#PasswdDlg" $args
67    set type      [Widget::getoption "$path#PasswdDlg" -type]
68    set loglabel  [Widget::getoption "$path#PasswdDlg" -loginlabel]
69    set passlabel [Widget::getoption "$path#PasswdDlg" -passwdlabel]
70    set labwidth  [Widget::getoption "$path#PasswdDlg" -labelwidth]
71    set cmd       [Widget::getoption "$path#PasswdDlg" -command]
72
73    set defb -1
74    set canb -1
75    switch -- $type {
76        ok        { set lbut {ok}; set defb 0 }
77        okcancel  { set lbut {ok cancel} ; set defb 0; set canb 1 }
78    }
79
80    eval Dialog::create $path [Widget::subcget "$path#PasswdDlg" ""] \
81        -image [Bitmap::get passwd] -side bottom -default $defb -cancel $canb
82    foreach but $lbut {
83        if { $but == "ok" && $cmd != "" } {
84            Dialog::add $path -text $but -name $but -command $cmd
85        } else {
86            Dialog::add $path -text $but -name $but
87        }
88    }
89    set frame [Dialog::getframe $path]
90    bind $path  <Return>  ""
91    bind $frame <Destroy> "Widget::destroy $path#PasswdDlg"
92
93    set lablog [eval LabelEntry::create $frame.lablog \
94                    [Widget::subcget "$path#PasswdDlg" .frame.lablog] \
95                    -label \"$loglabel\" -name login \
96                    -dragenabled 0 -dropenabled 0 \
97                    -command \"PasswdDlg::_verifonpasswd $path $frame.labpass\"]
98
99    set labpass [eval LabelEntry::create $frame.labpass \
100                     [Widget::subcget "$path#PasswdDlg" .frame.labpass] \
101                     -label \"$passlabel\" -name password -show "*" \
102                     -dragenabled 0 -dropenabled 0 \
103                     -command \"PasswdDlg::_verifonlogin $path $frame.lablog\"]
104
105    if { $labwidth == -1 } {
106        # les options -label sont mises a jour selon -name
107        set loglabel  [$lablog cget -label]
108        set passlabel [$labpass cget -label]
109        set labwidth  [PasswdDlg::_max [string length $loglabel] [string length $passlabel]]
110        incr labwidth 1
111        $lablog  configure -labelwidth $labwidth
112        $labpass configure -labelwidth $labwidth
113    }
114
115    proc ::$path { cmd args } "return \[eval PasswdDlg::\$cmd $path \$args\]"
116
117    pack  $frame.lablog $frame.labpass -fill x -expand 1
118    focus $frame.lablog.e
119    set res [Dialog::draw $path]
120
121    if { $res == 0 } {
122        set res [list [$lablog.e cget -text] [$labpass.e cget -text]]
123    } else {
124        set res [list]
125    }
126    Widget::destroy "$path#PasswdDlg"
127    destroy $path
128
129    return $res
130}
131
132# -----------------------------------------------------------------------------
133#  Command PasswdDlg::configure
134# -----------------------------------------------------------------------------
135
136proc PasswdDlg::configure { path args } {
137    set res [Widget::configure "$path#PasswdDlg" $args]
138}
139
140# -----------------------------------------------------------------------------
141#  Command PasswdDlg::cget
142# -----------------------------------------------------------------------------
143
144proc PasswdDlg::cget { path option } {
145    return [Widget::cget "$path#PasswdDlg" $option]
146}
147
148
149# -----------------------------------------------------------------------------
150#  Command PasswdDlg::_verifonlogin
151# -----------------------------------------------------------------------------
152proc PasswdDlg::_verifonlogin { path labpass } {
153    if { [$labpass.e cget -text] == "" } {
154        focus $labpass
155    } else {
156        Dialog::setfocus $path default
157    }
158}
159
160# -----------------------------------------------------------------------------
161#  Command PasswdDlg::_verifonpasswd
162# -----------------------------------------------------------------------------
163proc PasswdDlg::_verifonpasswd { path lablog } {
164    if { [$lablog.e cget -text] == "" } {
165        focus $lablog
166    } else {
167        Dialog::setfocus $path default
168    }
169}
170
171# -----------------------------------------------------------------------------
172#  Command PasswdDlg::_max
173# -----------------------------------------------------------------------------
174proc PasswdDlg::_max { val1 val2 } {
175    return [expr ($val1 > $val2) ? ($val1) : ($val2)]
176}
Note: See TracBrowser for help on using the repository browser.