Example #1
0
 def readline(self,acceptable=ac.is_safe_char,finish=ac.ks_finish,buf_size=20, prompt='', prefix=u''):
     if prompt :
         self.write(prompt)
     if prefix :
         buf = list(prefix)
         self.write(prefix)
     else:
         buf = []
     while len(buf) < buf_size:
         ds = self.read_secret(2)
         if len(ds) == 1 and ac.is_gbk_zh(ds):  ## fix_bug for sterm
             ds += self.read_secret()
         if ds == ac.k_backspace :
             if buf :
                 data = buf.pop()
                 self.write(ac.backspace * ac.srcwidth(data))
                 continue
         elif ds in finish :
             return ''.join(buf)
         elif ds == ac.k_ctrl_c:
             return False
         elif acceptable(ds):
             buf.append(ds)
             self.write(ds)
     return ''.join(buf)
Example #2
0
 def safe_readline(self, prompt=u'', acceptable=ac.is_safe_char,
                   finish=ac.ks_finish,buf_size=20,  prefix=u''):
     '''
     Return the string when `finish` key recv, return False while recv a k_ctrl_c
     '''
     if prompt :
         self.write(prompt)
     if prefix :
         buf = list(prefix)
         self.write(prefix)
     else:
         buf = []
     while True:
         char = self.read_secret()
         if char in ac.ks_delete :
             if buf :
                 data = buf.pop()
                 self.write(ac.backspace * ac.srcwidth(data))
                 continue
         elif char in finish :
             return u''.join(buf)
         elif char == ac.k_ctrl_c:
             return False
         elif acceptable(char):
             if len(buf) < buf_size:
                 buf.append(char)
                 self.write(char)
     return u''.join(buf)
Example #3
0
 def safe_readline(self,
                   prompt=u'',
                   acceptable=ac.is_safe_char,
                   finish=ac.ks_finish,
                   buf_size=20,
                   prefix=u''):
     '''
     Return the string when `finish` key recv, return False while recv a k_ctrl_c
     '''
     if prompt:
         self.write(prompt)
     if prefix:
         buf = list(prefix)
         self.write(prefix)
     else:
         buf = []
     while True:
         char = self.read_secret()
         if char in ac.ks_delete:
             if buf:
                 data = buf.pop()
                 self.write(ac.backspace * ac.srcwidth(data))
                 continue
         elif char in finish:
             return u''.join(buf)
         elif char == ac.k_ctrl_c:
             return False
         elif acceptable(char):
             if len(buf) < buf_size:
                 buf.append(char)
                 self.write(char)
     return u''.join(buf)
Example #4
0
 def readline(self, prefix, acceptable=ac.is_safe_char, finish=ac.ks_finish, buf_size=78):
     '''
     Return the string when `finish` key recv, return False while recv a k_ctrl_c
     '''
     if prefix is None:
         buf = []
     else:
         buf = list(prefix)
         self.frame.push(prefix)
     while True:
         char = self.frame.read_secret()
         if char in ac.ks_delete :
             if buf :
                 data = buf.pop()
                 self.frame.push(ac.backspace * ac.srcwidth(data))
                 continue
         elif char in finish :
             return u''.join(buf)
         elif char == ac.k_ctrl_c:
             return False
         elif acceptable(char):
             if len(buf) < buf_size:
                 buf.append(char)
                 self.frame.push(char)
     return u''.join(buf)
Example #5
0
 def readline(self,acceptable=ac.is_safe_char,finish=ac.ks_finish,buf_size=20):
     buf = []
     while len(buf) < buf_size:
         ds = self.read_secret()
         if len(ds) == 1 and self.is_gbk_zh(ds):  ## fix_bug for sterm
             ds += self.read_secret()
         for d in self.u(ds):
             if d == ac.k_backspace :
                 if buf :
                     data = buf.pop()
                     self.write(ac.backspace * ac.srcwidth(data))
                     continue
             elif d in finish :
                 return ''.join(buf)
             elif d == ac.k_ctrl_c:
                 return False
             else:
                 if acceptable(d):
                     buf.append(d)
                     self.write(d)
     return ''.join(buf)
Example #6
0
 def char_width(self, char):
     if char == self.esc:
         return 1
     return ac.srcwidth(char)
Example #7
0
 def delete(self):
     data = super(VisableInput, self).delete() # !!! ugly but important
     if data :
         self.frame.write(ac.srcwidth(data) * ac.backspace)
         return data