No BSD License  

Highlights from
passcode

image thumbnail
from passcode by Elmar Tarajan
PASSCODE creates a modal dialog box that returns user password input like in usual Windows dialogs.

passcode(charset);
function pass = passcode(charset);
%PASSCODE  password input dialog box.
%  passcode creates a modal dialog box that returns user password input.
%  Given characters are substituted with '*'-Signs like in usual Windows dialogs.
%  
%  usage:
%  answer = PASSCODE 
%     without input parameter allows to type any ASCII-Character
%  answer = PASSCODE('digit') 
%     allows only digits as input characters [0-9]
%  answer = PASSCODE('letter')
%     allows only letters as input characters [a-z_A-Z]
%  answer = PASSCODE(<string>)
%     allows to use characters from the specified string only
%     
%  See also PCODE.

% Version: v1.2 (03-Mar-2008)
% Author:  Elmar Tarajan [MCommander@gmx.de]

if nargin==0
   charset = default;
else
   if any(strcmp({'letter' 'digit'},charset))
      charset = eval(charset);
   elseif ~isa(charset,'char')
      error('string expected. Check input parameters.')
   end% if
end% if
%
ScreenSize = get(0,'ScreenSize');
hfig = figure('Menubar','none', ...
   'Units','Pixels', ...
   'Resize','off', ...
   'NumberTitle','off', ...
   'Name',['password required'], ...
   'Position',[ (ScreenSize(3:4)-[300 75])/2 300 75], ...
   'Color',[0.8 0.8 0.8], ...
   'WindowStyle','modal');
hedit = uicontrol('Parent',hfig, ...
   'Style','Edit', ...
   'Enable','inactive', ...
   'Units','Pixels','Position',[49 28 202 22], ...
   'FontSize',15, ...
   'String',[], ...   
   'BackGroundColor',[0.7 0.7 0.7]);
hpass = uicontrol('Parent',hfig, ...
   'Style','Text', ...
   'Tag','password', ...
   'Units','Pixels','Position',[51 30 198 18], ...
   'FontSize',15, ...
   'BackGroundColor',[1 1 1]);
hwarn = uicontrol('Parent',hfig, ...
   'Style','Text', ...
   'Tag','error', ...
   'Units','Pixels','Position',[50 2 200 20], ...
   'FontSize',8, ...
   'String','character not allowed',...
   'Visible','off',...
   'ForeGroundColor',[1 0 0], ...
   'BackGroundColor',[0.8 0.8 0.8]);
%
set(hfig,'KeyPressFcn',{@keypress_Callback,hedit,hpass,hwarn,charset}, ...
         'CloseRequestFcn','uiresume')
%
uiwait
pass = get(hpass,'userdata');
delete(hfig)
  %
  %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function keypress_Callback(hObj,data,hedit,hpass,hwarn,charset)
%--------------------------------------------------------------------------
pass = get(hpass,'userdata');
%
switch data.Key
   case 'backspace'
      pass = pass(1:end-1);
      %
   case 'return'
      uiresume
      return
      %
   otherwise
      try
         if any(charset == data.Character)
            pass = [pass data.Character];
         else
            set(hwarn,'Visible','on')
            pause(0.5)
            set(hwarn,'Visible','off')
         end% if
      end% try
      %
end% switch
%
set(hpass,'userdata',pass)
set(hpass,'String',char('*'*sign(pass)))
  %
  %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function charset = default
%--------------------------------------------------------------------------
% charset = [letter digit '<>[]{}()@!?*#=~-+_.,;:$%&/|\'];
charset = char(1:255);
  %
  %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function charset = digit
%--------------------------------------------------------------------------
charset = '0123456789';
  %
  %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function charset = letter
%--------------------------------------------------------------------------
charset = char([65:90 97:122]);
  %
  %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% I LOVE MATLAB %%%

Contact us at files@mathworks.com