예제 #1
0
파일: menu.py 프로젝트: LTsheldon-ish/argon
 def initialize(self):
     for i in range(10,0,-1):
         sleep(1)
         self.write(ac.clear + ac.move2(12, 40) + str(i))
     self.write(ac.clear + ac.move2(12,40) + ac.blink + u'任意键继续')
     self.pause()
     data = tidy_anim(self.render_str('movie'), 21)
     self.anim = self.load(Animation, data, pause=self.pause,
                           start_line=0,  callback=self.play_done)
     self.anim.run(playone=True)
예제 #2
0
파일: admin.py 프로젝트: pengzhr/argon
 def add(self):
     self.write("".join([ac.move2(4, 1), ac.kill_line_n(20), ac.move2(5, 1), self.render_str("add_team_hint")]))
     teams = self.readline(prompt=u"请输入要加入的组,逗号隔开:")
     if teams:
         succ = 0
         notfound = 0
         for t in teams.split(","):
             if t in self.alias:
                 t = self.alias[t]
             if manager.team.exists(t):
                 manager.team.join_team(self.euserid, t)
                 succ += 1
             else:
                 notfound += 1
         self.hint(u"加入成功 %s 个,找不到id共 %s 个" % (succ, notfound))
     self.refresh_items()
예제 #3
0
파일: mmssgg.py 프로젝트: argolab/chaofeng
 def initialize(self):
     self.write(''.join([ac.clear, ac.move2(22,1)]))
     self.session.charset = 'utf8'
     while True:
         username_inputer = self.load(EastAsiaTextInput)
         username = username_inputer.readln(prompt=u'请输入你的用户名,没有则会注册一个:')
         if not username :
             continue
         password_inputer = self.load(Password)
         password = password_inputer.readln(prompt=u'请输入你的密码:')
         if username in USER_POOL :
             if USER_POOL[username] != password :
                 self.wrong(u'用户名与密码不匹配!')
                 continue
             self.success(u'登录成功!')
         else:
             if len(USER_POOL) >= MAX_REGISTER:
                 self.wrong(u'对不起,已达最大注册人数!')
                 self.close()
             self.success(u'注册新用户!')
             USER_POOL[username] = password
             MSG_BOX[username] = u'欢迎使用!您还没有留言!'
         break
     self.session['username'] = username
     self.pause()
     self.goto('main_menu')
예제 #4
0
파일: boardlist.py 프로젝트: dengzhp/argon
 def readline(self, acceptable=ac.is_safe_char, finish=ac.ks_finish, buf_size=20, prompt=u"", prefix=""):
     self.write("".join((ac.move2(24, 1), ac.kill_line)))
     res = super(BaseTableFrame, self).readline(acceptable, finish, buf_size, prompt, prefix=prefix)
     self.write("\r")
     self.bottom_bar()
     self.table.restore_cursor_gently()
     return res
예제 #5
0
파일: boardlist.py 프로젝트: dengzhp/argon
 def read_with_hook(self, hook, buf_size=20, prompt=""):
     self.write("".join((ac.move2(2, 1), ac.kill_line)))
     if prompt:
         self.write(prompt)
     buf = []
     while len(buf) < buf_size:
         ds = self.read_secret(2)
         ds = ds or ds[0]
         if ds == ac.k_backspace:
             if buf:
                 data = buf.pop()
                 self.write(ac.backspace)
             continue
         elif ds in ac.ks_finish:
             break
         elif ds == ac.k_ctrl_c:
             buf = False
             break
         else:
             if ds.isalnum():
                 buf.append(ds)
                 self.write(ds)
                 hook("".join(buf))
     self.write("\r")
     self.quick_help()
     self.table.restore_cursor_gently()
     if buf is False:
         return buf
     else:
         return "".join(buf)
예제 #6
0
파일: menu.py 프로젝트: wuhann/argon
 def display(self):
     self.cls()
     self.top_bar()
     self.anim_.lanuch()
     self.bottom_bar()
     self.write(ac.move2(11,0))
     self.menu_.display()
예제 #7
0
파일: edit.py 프로젝트: sscst/argon
 def bottom_bar(self, msg=u''):
     self.frame.push(ac.move2(24, 1))
     self.frame.render(u'bottom_edit',
                       message=msg,
                       l=self._hover_col,
                       r=self._hover_row)
     self.fix_cursor()
예제 #8
0
파일: argo_frame.py 프로젝트: yanwen/argon
 def bottom_bar(self,repos=False,close=False):
     if close : self.write(ac.save)
     if repos : self.write(ac.move2(24,0))
     self.write( zh_format(self.bottom_txt,
                           datetime.now().ctime(),
                           self.session.userid))
     if close : self.write(ac.restore)
예제 #9
0
파일: mmssgg.py 프로젝트: argolab/chaofeng
 def bottom_bar(self, msg=u''):
     self.frame.write(''.join([ac.move2(24, 1), ac.kill_to_end,
                               ac.outlook(ac.art_code['bg_blue'],
                                          ac.art_code['yellow'],
                                          ac.art_code['bold']),
                               msg, ac.reset]))
     self.fix_cursor()
예제 #10
0
파일: user.py 프로젝트: dengzhp/argon
 def initialize(self):
     self.cls()
     self.render('nickdata')
     res = self.select(lambda o : self.write(ac.move2(12,1)+ ac.clear1+
                                             unicode(self.session.user[o])+
                                             ac.move2(10,6) + ac.kill_to_end +
                                             config.options['nickdata'][o]),
                       self.options)
     if res is not False:
         self.sel = self.options[res]
         self.suspend('edit_text', callback=self.save_text,
                      filename=config.options['nickdata'][self.sel])
     else:
         self.write(u'\r\n取消设置!')
         self.pause()
         self.goto_back()
예제 #11
0
 def bottom_bar(self, s, l, message=''):
     self.write(ac.move2(24, 1))
     percent = (s + 1) * 100 // (l + 1)
     self.render(u'bottom_view_topic',
                 s=s,
                 percent=percent,
                 message=message)
예제 #12
0
 def read_with_hook(self, hook, pos, buf_size=20):
     buf = []
     while True:
         self.push(ac.move2(pos[0], pos[1]))
         ds = self.read_secret()
         ds = ds or ds[0]
         if ds == ac.k_backspace:
             if buf:
                 data = buf.pop()
                 pos[1] -= 1
                 self.write(ac.backspace)
             continue
         elif ds in ac.ks_finish:
             break
         elif ds == ac.k_ctrl_c:
             buf = False
             break
         elif len(buf) < buf_size:
             if ds.isalnum() or ds == '_' :
                 buf.append(ds)
                 self.write(ds)
                 pos[1] += 1
                 hook(u''.join(buf))
     if buf is False :
         return buf
     else:
         return u''.join(buf)                
예제 #13
0
 def read_with_hook(self, hook, pos, buf_size=20):
     buf = []
     while True:
         self.push(ac.move2(pos[0], pos[1]))
         ds = self.read_secret()
         ds = ds or ds[0]
         if ds == ac.k_backspace:
             if buf:
                 data = buf.pop()
                 pos[1] -= 1
                 self.write(ac.backspace)
             continue
         elif ds in ac.ks_finish:
             break
         elif ds == ac.k_ctrl_c:
             buf = False
             break
         elif len(buf) < buf_size:
             if ds.isalnum() or ds == '_':
                 buf.append(ds)
                 self.write(ds)
                 pos[1] += 1
                 hook(u''.join(buf))
     if buf is False:
         return buf
     else:
         return u''.join(buf)
예제 #14
0
    def initialize(self):
        # self.write('Welcome to Guest BBS')
        # self.write(''.join([ac.clear, ac.move2(22, 1)]))
        self.session.charset = 'utf8'
        self.set_title(res.welcome_title)
        self.write(''.join([ac.move2(22, 1)]))

        while True:
            username_inputer = self.load(EastAsiaTextInput)
            username = username_inputer.readln(prompt=res.please_enter_username)
            if not username:
                continue
            elif username == res.register_user_name:
                self.goto('register')
            password_inputer = self.load(Password)
            password = password_inputer.readln(prompt=res.please_enter_password)
            if user.login(username, password):
                self.goto('main_menu')
            else:
                continue
            # if username in USER_POOL:
            #     if USER_POOL[username] != password:
            #         self.wrong(u'用户名与密码不匹配!')
            #         continue
            #     self.success(res.login_success)
            # else:
            #     if len(USER_POOL) >= MAX_REGISTER:
            #         self.wrong(u'对不起,已达最大注册人数!')
            #         self.close()
            #     self.success(u'注册新用户!')
            #     USER_POOL[username] = password
            #     MSG_BOX[username] = u'欢迎使用!您还没有留言!'
            # break
        self.session['username'] = username
        self.pause()
예제 #15
0
파일: boardlist.py 프로젝트: sscst/argon
 def readline(self):
     self.push(ac.move2(24, 1))
     self.push(ac.kill_line)
     res = self.safe_readline()
     self.push(u'\r')
     self.push(self.render_str('bottom'))
     self._table.restore_cursor_gently()
     return res
예제 #16
0
파일: menu.py 프로젝트: Acidburn0zzz/argon
 def restore(self):
     self.cls()
     self.top_bar()
     self.bottom_bar()
     self.push(ac.move2(self._MENU_START_LINE, 1))
     self.push(self._menu_background)
     self._anim.launch()
     self._menu.restore()
예제 #17
0
 def restore(self):
     self.cls()
     self.top_bar()
     self.bottom_bar()
     self.push(ac.move2(self._MENU_START_LINE, 1))
     self.push(self._menu_background)
     self._anim.launch()
     self._menu.restore()
예제 #18
0
파일: inputs.py 프로젝트: LTaoist/chaofeng
 def set_data(self, real, pos, shortcuts, text):
     self.real = real
     self.pos = pos
     self.shortcuts = shortcuts
     self.text = text
     self.content = u''.join([ u'%s  %s' % (ac.move2(*p), t)
                              for p,t in zip(pos, text)])
     self.len = len(self.real)
예제 #19
0
파일: postlist.py 프로젝트: pengzhr/argon
 def readline(self, prompt=u"", prefix=u"", acceptable=ac.is_safe_char, buf_size=20):
     self.push(ac.move2(24, 1))
     self.push(ac.kill_line)
     res = self.safe_readline(prompt=prompt, prefix=prefix, acceptable=acceptable, buf_size=buf_size)
     self.push(u"\r")
     self.push(self.render_str("bottom"))
     self._table.restore_cursor_gently()
     return res
예제 #20
0
 def readline(self):
     self.push(ac.move2(24, 1))
     self.push(ac.kill_line)
     res = self.safe_readline()
     self.push(u'\r')
     self.push(self.render_str('bottom'))
     self._table.restore_cursor_gently()
     return res
예제 #21
0
 def initialize(self):
     super(BaseSelectFrame, self).initialize()
     self.menu = self.load(ColMenu)
     menu, height, background = self.load_all()
     self.menu.setup(menu,
                     height,
                     ''.join((ac.move2(self.menu_start_line, 1) ,
                              background)))
     self.restore()
예제 #22
0
파일: box.py 프로젝트: LTaoist/chaofeng
 def move_down(self):
     try:
         line = self.lines[self._vis_start+self.height]
     except IndexError:
         self.callback(True)
         return
     self._vis_start += 1
     self.frame.write(''.join([ac.move2(self.height+1, 1), ac.kill_line,
                         line, '\r\n']))
예제 #23
0
파일: box.py 프로젝트: LTaoist/chaofeng
 def get_update_txt(self, text):
     row = self.start_line
     col = 5
     buf = []
     for d in text[:self.page_limit] :
         if col == 5 :
             buf.append('%s%s    %s' % (ac.move2(row, 1), ac.kill_to_end, d))
         else:
             buf.append('%s%s' % (ac.move2(row, col), d))
         col += 25
         if col >= 70:
             col = 5
             row += 1
     if not text :
         buf.append(ac.move2(row, col))
     if row < self.start_line + self.height - 1:
         buf += ['\r\n' + ac.kill_line] * (self.start_line + self.height - 1 - row)
     return ''.join(buf)
예제 #24
0
파일: box.py 프로젝트: argolab/chaofeng
 def _load_data(self, data, start_num):
     self.data = data
     self.start_num = start_num
     self.wrapper_data = [ self.formater(x) for x in self.data]
     self.index_limit = len(self.data)
     self._screen = ''.join([ac.move2(self.start_line, 1), ac.kill_line, 
                             self.seq_lines.join(self.wrapper_data),
                             self.empty_line*(self.height -
                                              self.index_limit)])
예제 #25
0
파일: postlist.py 프로젝트: sscst/argon
 def readline(self, prompt=u'', prefix=u'', acceptable=ac.is_safe_char,
              buf_size=20):
     self.push(ac.move2(24, 1))
     self.push(ac.kill_line)
     res = self.safe_readline(prompt=prompt, prefix=prefix,
                              acceptable=acceptable, buf_size=buf_size)
     self.push(u'\r')
     self.push(self.render_str('bottom'))
     self._table.restore_cursor_gently()
     return res
예제 #26
0
파일: admin.py 프로젝트: sscst/argon
 def add(self):
     self.write(''.join([ac.move2(4, 1),
                         ac.kill_line_n(20),
                         ac.move2(5, 1),
                         self.render_str('add_team_hint')]))
     teams = self.readline(prompt=u'请输入要加入的组,逗号隔开:')
     if teams :
         succ = 0
         notfound = 0
         for t in teams.split(',') :
             if t in self.alias:
                 t = self.alias[t]
             if manager.team.exists(t) :
                 manager.team.join_team(self.euserid, t)
                 succ += 1
             else:
                 notfound += 1
         self.hint(u'加入成功 %s 个,找不到id共 %s 个' % (succ, notfound))
     self.refresh_items()
예제 #27
0
 def read_lbd(self, reader):
     u'''
     Wrapper real read function.
     '''
     self.write(u''.join((ac.move2(24,1),  ac.kill_line)))
     res = reader()
     self.write(u'\r')
     self.bottom_bar()
     self.table.restore_cursor_gently()
     return res
예제 #28
0
파일: menu.py 프로젝트: dengzhp/argon
 def initialize(self):
     super(BaseMenuFrame, self).initialize()
     self.menu = self.load(ColMenu)
     menu,height,background = self.load_all()
     self.menu.setup(menu,
                     height, 
                     ''.join((ac.move2(self.menu_start_line, 1) ,
                              background)))
     anim_data = self.get_anim_data()
     self.anim = self.load(Animation, anim_data,
                           start_line=self.anim_start_line)
     self.restore()
예제 #29
0
파일: inputs.py 프로젝트: LTaoist/chaofeng
 def read(self, default=None):
     if default is None:
         default = {}
     for name,text,handler in self.data :
         self.frame.write(''.join((ac.move2(self.start_line, 1),
                                   ac.kill_line_n(self.height),
                                   ac.move2(self.start_line, 1), text)))
         while True:
             self.frame.write(''.join([ac.move2(self.start_line + self.height, 1),
                                      ac.kill_line]))
             value = self.readline(default.get(name))
             if value is False:
                 return
             try:
                 value = handler(value)
             except ValueError as e:
                 self.frame.write('%s%s\r\n' % (ac.move2(self.msg_line, 1), e.message))
             else:
                 default[name] = value
                 break
     return default
예제 #30
0
파일: box.py 프로젝트: LTaoist/chaofeng
 def load_data(self, start_num):
     data = self.loader(start_num, self.height)
     if data :
         self.data = data
         self.start_num = start_num
         self.wrapper_data = [ self.formater(x) for x in self.data]
         self.index_limit = len(self.data)
         self._screen = ''.join([ac.move2(self.start_line, 1), ac.kill_line, 
                                 self.seq_lines.join(self.wrapper_data),
                                 self.empty_line*(self.height - self.index_limit)])
     else:
         raise TableLoadNoDataError
예제 #31
0
파일: admin.py 프로젝트: pengzhr/argon
 def initialize(self, teamname):
     self.cls()
     self.teamname = teamname
     self.members = members = list(manager.team.all_members(teamname))
     self.top_bar()
     self.write(
         "".join([ac.move2(2, 1), config.str["EDIT_LIST_QUICK_HELP"], "\r\n", config.str["EDIT_LIST_TEAM_THEAD"]])
     )
     self.listbox = self.load(ListBox, start_line=4)
     self.listbox.update(members, members)
     self.prepare_remove = set()
     if not self.members:
         self.add()
예제 #32
0
 def debug(self):
     # self._eval('auth gcc 123')
     self.write( '\r\n'.join(
             map(lambda s : ''.join(
                     map(str,
                         range(s, s+20))),
                 range(1,20))))
     self.write(ac.move2(10,20))
     while True:
         print '>>',
         d = self.read()
         print '[%r]' % d
         self.write_raw("NEWLINE\241\276 \241\277\312")
예제 #33
0
파일: admin.py 프로젝트: sscst/argon
 def initialize(self, teamname):
     self.cls()
     self.teamname = teamname
     self.members = members = list(manager.team.all_members(teamname))
     self.top_bar()
     self.write(''.join([ac.move2(2,1),
                         config.str['EDIT_LIST_QUICK_HELP'],
                        '\r\n',
                        config.str['EDIT_LIST_TEAM_THEAD']]))
     self.listbox = self.load(ListBox, start_line=4)
     self.listbox.update(members, members)
     self.prepare_remove = set()
     if not self.members :
         self.add()
예제 #34
0
파일: admin.py 프로젝트: sscst/argon
 def initialize(self, userid):
     self.cls()
     self.euserid = userid
     self.teams = teams = list(manager.team.user_teams(userid))
     self.top_bar()
     self.write(''.join([ac.move2(2,1),
                         config.str['EDIT_LIST_QUICK_HELP'],
                        '\r\n',
                        config.str['EDIT_LIST_USERTEAM_THEAD']]))
     self.listbox = self.load(ListBox, start_line=4)
     self.listbox.update(teams, teams)
     self.prepare_remove = set()
     if not teams:
         self.add()
예제 #35
0
파일: mmssgg.py 프로젝트: argolab/chaofeng
 def initialize(self):
     self.write(''.join([
                 ac.clear,
                 ac.move2(10, 50),
                 ac.outlook(ac.art_code['red'], ac.art_code['bold']),
                 'M M S S G G',
                 ac.reset]))
     self.menu = self.load(ColMenu)  # 记住要先import ColMenu
     self.menu.setup([
             ['show_message', 'set_message', 'delete_self', 'bye'],
             [(8,20), (10,22), (12, 24), (14, 26)],
             {'a':0, 'b':1, 'c':2, 'd': 3},
             [u'a. 查看留言', u'b. 设置留言', u'c. 删除资料', u'd. 离开系统'],
             ])
     self.menu.restore()
예제 #36
0
파일: admin.py 프로젝트: pengzhr/argon
 def initialize(self, userid):
     self.cls()
     self.euserid = userid
     self.teams = teams = list(manager.team.user_teams(userid))
     self.top_bar()
     self.write(
         "".join(
             [ac.move2(2, 1), config.str["EDIT_LIST_QUICK_HELP"], "\r\n", config.str["EDIT_LIST_USERTEAM_THEAD"]]
         )
     )
     self.listbox = self.load(ListBox, start_line=4)
     self.listbox.update(teams, teams)
     self.prepare_remove = set()
     if not teams:
         self.add()
예제 #37
0
class BaseFrame(Frame):

    pause_prompt = '%s%s%s%s' % (ac.move2(
        24, 20), ac.outlook(ac.art_code['yellow'],
                            ac.art_code['blink']), '任意键继续', ac.reset)

    def set_title(self, msg):
        self.write(''.join([ac.clear, ac.move2(1, 1), msg]))

    def wrong(self, msg):
        self.writeln(u'%s%s%s' % (ac.red, msg, ac.reset))

    def warnning(self, msg):
        self.writeln(u'%s%s%s' % (ac.yellow, msg, ac.reset))

    def success(self, msg):
        self.writeln(u'%s%s%s' % (ac.green, msg, ac.reset))

    def pause(self):
        super(BaseFrame, self).pause(prompt=self.pause_prompt)
예제 #38
0
파일: register.py 프로젝트: qingant/guest
    def initialize(self):
        self.set_title(res.register_welcome_message)
        self.write(''.join([ac.move2(22, 1)]))
        while True:
            username_inputer = self.load(EastAsiaTextInput)
            name = username_inputer.readln(prompt=res.please_enter_username)
            if not name:
                continue
            pass_inputer = self.load(Password)
            password = pass_inputer.readln(prompt=res.please_enter_password)
            if not password:
                continue

            email_inputer = self.load(EastAsiaTextInput)
            email = email_inputer.readln(prompt=res.please_enter_email)

            if not email:
                continue
            user.register(name, password, email)
            self.goto('welcome')
예제 #39
0
파일: box.py 프로젝트: LTaoist/chaofeng
 def set_start(self,start):
     if start == self.s:
         return
     if (self.s > start) and (self.s <= start + 10):
         offset = self.s - start
         self.write(ac.move0 + ac.insertn(offset) + '\r')
         self.write('\r\n'.join(self.getlines(start,self.s)))
         self.s = start
         self.fix_bottom()
     elif (start > self.s) and (start <= self.s + 10):
         astart = self.s + self.h # Append Start
         self.write(ac.move2(self.h+1,0))
         self.write(ac.kill_line)
         self.write('\r\n'.join(self.getlines(astart, start + self.h)))
         self.write('\r\n')
         self.s = start
         self.fix_bottom()
     else :
         self.s = start
         self.restore_screen()
예제 #40
0
 def bottom_do(self, func, *args, **kwargs):
     self.push(ac.move2(24, 1))
     self.push(ac.kill_line)
     res = func(*args, **kwargs)
     self.bottom_bar()
     return res
예제 #41
0
 def set_title(self, msg):
     self.write(''.join([ac.clear, ac.move2(1, 1), msg]))
예제 #42
0
 def bottom_bar(self, s, l, message=''):
     self.push(ac.move2(24, 1))
     self.render(self.bottom_tpl, s=s, l=l, message=message)
예제 #43
0
파일: box.py 프로젝트: LTaoist/chaofeng
 def _fix_cursor(self):
     self.frame.write('%s %s>' % (ac.movex_d,
                                  ac.move2(self.start_line + self.hover, 1)))
예제 #44
0
 def bottom_bar(self, s, l, message=''):
     self.write(ac.move2(24, 1))
     self.render(u'bottom_view_float', s=s, l=l, message=message)
예제 #45
0
 def message(self, msg):
     self.push(ac.move2(24, 1))
     self.push(ac.kill_line)
     self.push(msg)
예제 #46
0
파일: admin.py 프로젝트: sscst/argon
 def readline(self, prompt):
     return self.safe_readline(prompt='%s%s\r\n' % (ac.move2(21,1), prompt))
예제 #47
0
파일: admin.py 프로젝트: sscst/argon
 def hint(self, msg):
     self.writeln('%s%s' % (ac.move2(23, 1), msg))
     self.pause()