本文整理汇总了Python中x84.bbs.LineEditor类的典型用法代码示例。如果您正苦于以下问题:Python LineEditor类的具体用法?Python LineEditor怎么用?Python LineEditor使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了LineEditor类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: try_pass
def try_pass(user):
"""
Prompt for password and authenticate, returns True if succesfull.
"""
# pylint: disable=R0914
# Too many local variables
from x84.bbs import getsession, getterminal, ini, LineEditor, echo
session, term = getsession(), getterminal()
prompt_pass = u'\r\n\r\n pass: '
status_auth = u'\r\n\r\n ' + term.yellow_reverse(u"Encrypting ..")
badpass_msg = (u'\r\n\r\n' + term.red_reverse +
u"'%s' login failed." + term.normal)
max_pass = int(ini.CFG.get('nua', 'max_pass'))
# prompt for password, disable input tap during, mask input with 'x',
# and authenticate against user record, performing a script change to
# topscript if sucessful.
# pylint: disable=W0212
# Access to a protected member _tap_input of a client class
echo(prompt_pass)
chk = session._tap_input # <-- save
session._tap_input = False
lne = LineEditor(max_pass)
lne.hidden = u'x'
password = lne.read()
session._tap_input = chk # restore -->
if password is not None and 0 != len(password):
echo(status_auth)
if user.auth(password):
return True
denied(badpass_msg % (user.handle,))
return False
开发者ID:donfanning,项目名称:x84,代码行数:31,代码来源:matrix.py
示例2: upload_files
def upload_files(term, protocol='xmodem1k'):
""" Upload files. """
echo(term.clear)
while True:
echo(u'Filename (empty to quit):\r\n')
led = LineEditor(width=term.width - 1)
led.refresh()
inp = led.read()
led = None
if inp:
for illegal in (os.path.sep, u'..', u'~',):
if illegal in inp:
echo(term.bold_red(u'\r\nIllegal filename.\r\n'))
term.inkey()
return
echo(term.bold(
u'\r\nBegin your {0} sending program now.\r\n'
.format(protocol)))
upload_filename = os.path.join(UPLOADS_DIR, inp)
try:
upload = open(upload_filename, 'wb')
except IOError as err:
echo(term.bold_red('u\r\nIOError: {err}\r\n'.format(err=err)))
else:
if not recv_modem(upload, protocol):
echo(term.bold_red(u'Upload failed!\r\n'))
os.unlink(upload_filename)
else:
echo(term.bold_green(u'Transfer succeeded.\r\n'))
term.inkey()
else:
return
开发者ID:jquast,项目名称:x84,代码行数:34,代码来源:fbrowse.py
示例3: do_select_encoding
def do_select_encoding(term, session):
editor_colors = {'highlight': term.black_on_green}
dirty = True
while True:
if session.poll_event('refresh') or dirty:
# attempt to coerce encoding of terminal to match session.
coerce_terminal_encoding(term, session.encoding)
# display artwork and prompt
vertical_padding = 2 if term.height >= 24 else 0
display_banner(filepattern=art_file,
encoding=art_encoding,
vertical_padding=vertical_padding)
display_prompt(term)
dirty = False
inp = LineEditor(1, colors=editor_colors).read()
if inp is None or inp.lower() == 'd':
break
elif len(inp):
# bad input -- reposition cursor for next LineEditor()
echo(u'\b')
if inp.lower() == u'u' and session.encoding != 'utf8':
# switch to utf8,
session.encoding = 'utf8'
dirty = True
elif inp.lower() == 'c' and session.encoding != 'cp437':
# or cp437
session.encoding = 'cp437'
dirty = True
开发者ID:rostob,项目名称:x84,代码行数:31,代码来源:charset.py
示例4: saysomething
def saysomething(dumb=True):
"""
Prompt user to post oneliner, also prompt user to post
to bbs-scene.org if configured, returning background Thread.
"""
import time
from x84.bbs import getsession, getterminal, echo, LineEditor, ini
session, term = getsession(), getterminal()
prompt_say = u'SAY WhAt ?! '
# heard_msg = u'YOUR MESSAGE hAS bEEN VOiCEd.'
yloc = term.height - 3
xloc = max(0, ((term.width / 2) - (MAX_INPUT / 2)))
if dumb:
echo(u'\r\n\r\n' + term.bold_blue(prompt_say))
else:
echo(term.move(yloc, xloc) or u'\r\n\r\n')
echo(term.bold_blue(prompt_say))
ole = LineEditor(MAX_INPUT)
ole.highlight = term.green_reverse
oneliner = ole.read()
if oneliner is None or 0 == len(oneliner.strip()):
if not dumb:
# clear input line,
echo(term.normal + term.move(yloc, 0) + term.clear_eol)
return None
session.user['lastliner'] = time.time()
# post local-onlyw hen bbs-scene.org is not configured
if not ini.CFG.has_section('bbs-scene'):
add_oneline(oneliner.strip())
return None
return post_bbs_scene(oneliner, dumb)
开发者ID:donfanning,项目名称:x84,代码行数:33,代码来源:ol.py
示例5: prompt_tags
def prompt_tags(msg):
""" Prompt for and return tags wished for message. """
# pylint: disable=R0914,W0603
# Too many local variables
# Using the global statement
from x84.bbs import DBProxy, echo, getterminal, getsession
from x84.bbs import Ansi, LineEditor
session, term = getsession(), getterminal()
tagdb = DBProxy('tags')
msg_onlymods = (u"\r\nONlY MEMbERS Of thE '%s' OR '%s' "
"GROUP MAY CREAtE NEW tAGS." % (
term.bold_yellow('sysop'),
term.bold_blue('moderator'),))
msg_invalidtag = u"\r\n'%s' is not a valid tag."
prompt_tags1 = u"ENtER %s, COMMA-dEliMitEd. " % (
term.bold_red('TAG(s)'),)
prompt_tags2 = u"OR '/list', %s:quit\r\n : " % (
term.bold_yellow_underline('Escape'),)
while True:
# Accept user input for multiple 'tag's, or /list command
echo(u'\r\n\r\n')
echo(prompt_tags1)
echo(prompt_tags2)
width = term.width - 6
sel_tags = u', '.join(msg.tags)
inp_tags = LineEditor(width, sel_tags).read()
if inp_tags is not None and 0 == len(inp_tags.strip()):
# no tags must be (private ..)
msg.tags = set()
return True
if inp_tags is None or inp_tags.strip().lower() == '/quit':
return False
elif inp_tags.strip().lower() == '/list':
# list all available tags, and number of messages
echo(u'\r\n\r\nTags: \r\n')
all_tags = sorted(tagdb.items())
if 0 == len(all_tags):
echo(u'None !'.center(term.width / 2))
else:
echo(Ansi(u', '.join(([u'%s(%d)' % (_key, len(_value),)
for (_key, _value) in all_tags]))
).wrap(term.width - 2))
continue
echo(u'\r\n')
# search input as valid tag(s)
tags = set([inp.strip().lower() for inp in inp_tags.split(',')])
err = False
for tag in tags.copy():
if not tag in tagdb and not (
'sysop' in session.user.groups or
'moderator' in session.user.groups):
tags.remove(tag)
echo(msg_invalidtag % (term.bold_red(tag),))
err = True
if err:
echo(msg_onlymods)
continue
msg.tags = tags
return True
开发者ID:quastdog,项目名称:x84,代码行数:60,代码来源:writemsg.py
示例6: add_comment
def add_comment(key):
""" Prompt user to add a comment about a bbs. """
# pylint: disable=R0914
# Too many local variables.
from x84.bbs import getsession, getterminal, echo, DBProxy, LineEditor
from x84.bbs import getch
session, term = getsession(), getterminal()
prompt_comment = u'\r\n\r\nWhAt YOU GOt tO SAY? '
prompt_chg = u'\r\n\r\nChANGE EXiStiNG ? [yn] '
echo(term.move(term.height, 0))
echo(prompt_comment)
comment = LineEditor(max(10, term.width - len(prompt_comment) - 5)).read()
if comment is None or 0 == len(comment.strip()):
return
new_entry = (session.handle, comment)
comments = DBProxy('bbslist', 'comments')
comments.acquire()
existing = comments[key]
if session.handle in (_nick for (_nick, _cmt) in comments[key]):
# change existing comment,
echo(prompt_chg)
if getch() not in (u'y', u'Y'):
comments.release()
return
# re-define list without existing entry, + new entry
comments[key] = [(_enick, _ecmt) for (_enick, _ecmt) in existing
if session.handle != _enick] + [new_entry]
comments.release()
return
# re-define as existing list + new entry
comments[key] = existing + [new_entry]
comments.release()
开发者ID:jonny290,项目名称:yos-x84,代码行数:32,代码来源:bbslist.py
示例7: prompt_tags
def prompt_tags(session, term, msg, colors, public=True):
xpos = max(0, (term.width // 2) - (80 // 2))
# conditionally enforce tag moderation
moderated = get_ini("msg", "moderated_tags", getter="getboolean")
tag_moderators = set(get_ini("msg", "tag_moderators", split=True))
# enforce 'public' tag
if public and "public" not in msg.tags:
msg.tags.add("public")
elif not public and "public" in msg.tags:
msg.tags.remove("public")
# describe all available tags, as we oft want to do.
do_describe_available_tags(term, colors)
# and remind ourselves of the available network tags,
description = get_network_tag_description(term, colors)
if description:
show_description(term=term, color=None, description=description)
echo(
u"".join(
(term.move_x(xpos), term.clear_eos, u"Enter tags, separated by commas.\r\n", term.move_x(xpos), u":: ")
)
)
all_tags = list_tags()
while True:
inp = LineEditor(
subject_max_length, u", ".join(sorted(msg.tags)), colors={"highlight": colors["backlight"]}
).read()
if inp is None:
echo(u"".join((term.move_x(xpos), colors["highlight"]("Message canceled."), term.clear_eol)))
term.inkey(1)
return False
msg.tags = set(filter(None, set(map(unicode.strip, inp.split(",")))))
if moderated and not (tag_moderators | session.user.groups):
cannot_tag = [_tag for _tag in msg.tags if _tag not in all_tags]
if cannot_tag:
echo(
u"".join(
(
u"\r\n",
term.move_x(xpos),
u", ".join((quote(tag, colors) for tag in cannot_tag)),
u": not allowed; this system is moderated.",
)
)
)
term.inkey(2)
echo(term.move_up)
map(msg.tags.remove, cannot_tag)
continue
return True
开发者ID:gofore,项目名称:x84,代码行数:58,代码来源:msgarea.py
示例8: main
def main():
session = getsession()
session.activity = u'hanging out in voting script'
term = getterminal()
echo(term.clear())
db = DBProxy(databasename)
if not 'questions' in db:
generate_database()
while True:
echo(term.clear()) # clears the screen and displays the vote art header
for line in showart(os.path.join(os.path.dirname(__file__),'art','vote.ans'),'topaz'):
echo(term.cyan+term.move_x((term.width/2)-40)+line)
if 'sysop' in session.user.groups:
spacing = 1
else:
spacing = 7
echo(' ')
echo(term.magenta+'\n ('+term.cyan+'r'+term.magenta+')'+term.white+'esults'+' '*spacing)
echo(term.magenta+'('+term.cyan+'v'+term.magenta+')'+term.white+'ote on a question'+' '*spacing)
echo(term.magenta+'('+term.cyan+'a'+term.magenta+')'+term.white+'dd a new question'+' '*spacing)
if 'sysop' in session.user.groups:
echo(term.magenta+'('+term.cyan+'d'+term.magenta+')'+term.white+'elete a question'+' '*spacing)
echo(term.magenta+'('+term.cyan+'q'+term.magenta+')'+term.white+'uit')
echo(term.magenta+'\r\n\r\n\r\nx/84 voting booth command: ')
le = LineEditor(30)
le.colors['highlight'] = term.cyan
inp = le.read()
inp = inp.lower() # makes the input indifferent to wheter you used lower case when typing in a command or not..
if 'sysop' in session.user.groups and inp == 'd':
while 1:
questionnumber = query_question()
if questionnumber == 999:
break
delete_question(questionnumber)
elif inp == 'r':
while 1:
questionnumber = query_question()
if questionnumber == 999:
break
list_results(questionnumber)
elif inp == 'v':
while 1:
questionnumber = query_question()
if questionnumber == 999:
break
vote(questionnumber)
elif inp == 'a':
add_question()
elif inp == 'q':
return
else:
echo(term.red+'\r\nNo such command. Try again.\r\n') # if no valid key is pressed then do some ami/x esthetics.
waitprompt()
开发者ID:hick,项目名称:x84,代码行数:57,代码来源:vote.py
示例9: prompt_recipient
def prompt_recipient(msg):
""" Prompt for recipient of message. """
# pylint: disable=R0914
# Too many local variables
from x84.bbs import getterminal, LineEditor, echo, ini, list_users
from x84.bbs import Selector
import difflib
term = getterminal()
echo(u"ENtER %s, OR '%s' tO AddRESS All. %s to exit" % (
term.bold_yellow(u'hANdlE'),
term.bold_yellow(u'None'),
term.bold_yellow_underline('Escape'),))
echo(u'\r\n\r\n')
max_user = ini.CFG.getint('nua', 'max_user')
lne = LineEditor(max_user, msg.recipient or u'None')
lne.highlight = term.yellow_reverse
echo(term.clear_eol + u' RECiPiENt: ')
recipient = lne.read()
if recipient is None or lne.quit:
return False
userlist = list_users()
if recipient in userlist:
msg.recipient = recipient
return True
elif len(recipient) != 0 and recipient != 'None':
for match in difflib.get_close_matches(recipient, userlist):
blurb = u'did YOU MEAN: %s ?' % (match,)
inp = Selector(yloc=term.height - 1,
xloc=term.width - 22,
width=20, left=u'YES', right=u'NO')
echo(u''.join((
u'\r\n',
term.move(inp.yloc, inp.xloc - len(blurb)),
term.clear_eol,
term.bold_yellow(blurb))))
selection = inp.read()
echo(term.move(inp.yloc, 0) + term.clear_eol)
if selection == u'YES':
msg.recipient = match
return True
if selection is None or inp.quit:
return False
else:
blurb = u' NO RECiPiENT; POSt tO PUbliC? '
inp = Selector(yloc=term.height - 1,
xloc=term.width - 22,
width=20, left=u'YES', right=u'NO')
echo(u''.join((
u'\r\n',
term.move(inp.yloc, inp.xloc - len(blurb)),
term.clear_eol,
term.bold_yellow(blurb))))
selection = inp.read()
echo(term.move(inp.yloc, 0) + term.clear_eol)
if selection == u'YES':
msg.recipient = None
return True
开发者ID:quastdog,项目名称:x84,代码行数:57,代码来源:writemsg.py
示例10: locate_user
def locate_user(term, point):
""" Prompt for search pattern and return discovered User. """
_color1, _color2, _color3 = [
getattr(term, _color) for _color in (
color_lowlight, color_highlight, color_field_edit)]
# show help
width = term.width - (point.x * 2)
help_txt = (u'Enter username or glob pattern. Press escape to cancel.')
y_offset = 0
for y_offset, txt in enumerate(term.wrap(help_txt, width=width)):
echo(term.move(point.y + y_offset, point.x))
echo(_color1(txt) + term.clear_eol)
point_prompt = Point(y=point.y + y_offset + 2, x=point.x)
editor = LineEditor(nua.username_max_length, colors={'highlight': _color3})
while True:
# prompt for handle
echo(term.move(*point_prompt))
echo(u'handle: ' + term.clear_eol)
inp = editor.read()
point = Point(y=point_prompt.y + 2, x=point.x)
if inp is None:
# canceled (escape)
return
elif u'*' in inp or u'?' in inp:
# a glob pattern, fetch all usernames
handles = fnmatch.filter(list_users(), inp)
if len(handles) == 0:
echo(u''.join((term.move(*point),
u'No matches for {0}.'.format(_color2(inp)),
term.clear_eos)))
elif len(handles) == 1:
return get_user(handles[0])
else:
matches_text = (
u'{0} accounts matched, chose one: {1}.'.format(
_color2(str(len(handles))), u', '.join(
_color2(handle) for handle in handles)))
echo(term.move(*point))
for y_offset, txt in enumerate(
term.wrap(matches_text, width=width)):
echo(term.move(point.y + y_offset, point.x))
echo(txt + term.clear_eol)
if point.y + y_offset > term.height - 3:
# we simply cannot display anymore
break
echo(term.clear_eos)
else:
handle = find_user(inp)
if handle is not None:
return get_user(handle)
echo(u''.join((term.move(*point),
u'No matches for {0}.'.format(_color2(inp)),
term.clear_eos)))
开发者ID:rostob,项目名称:x84,代码行数:56,代码来源:profile.py
示例11: add_question
def add_question():
term = getterminal()
db = DBProxy(databasename)
questions = []
amount_of_alternatives = []
index = {}
alternatives = {}
results = {}
index = db['index']
questions = db['questions']
alternatives = db['alternatives']
results = db['results']
amount_of_alternatives = db['amount_of_alternatives']
amount_of_questions = len(questions)
echo(term.clear + term.white + '\r\nQuestion: ')
le = LineEditor(65)
new_question = le.read()
if new_question == '':
return
echo(
term.bold_black + '\r\n\r\nLeave a blank line when you are finished..')
new_amount = 0
while True:
echo(term.normal + term.white + '\r\nchoice ' +
term.red + str(new_amount) + term.white + ': ')
le = LineEditor(48)
alternatives[(amount_of_questions, new_amount)] = le.read()
if alternatives[(amount_of_questions, new_amount)] == '':
break
else:
results[(amount_of_questions, new_amount)] = 0
new_amount = new_amount + 1
if new_amount > 0:
echo(term.normal + term.white + '\r\n\r\nSave this voting question?')
answer = ynprompt()
if answer == 1:
questions.append(new_question)
amount_of_alternatives.append(new_amount)
indexcounter = db['indexcounter']
indexcounter = indexcounter + 1
index.append(str(indexcounter))
db['indexcounter'] = indexcounter
db['index'] = index
db['questions'] = questions
db['amount_of_alternatives'] = amount_of_alternatives
db['results'] = results
db['amount_of_questions'] = amount_of_questions
db['alternatives'] = alternatives
waitprompt()
开发者ID:tehmaze,项目名称:x84,代码行数:56,代码来源:vote.py
示例12: prompt_subject
def prompt_subject(msg):
""" Prompt for subject of message. """
from x84.bbs import getterminal, LineEditor, echo, ini
term = getterminal()
max_subject = int(ini.CFG.getint('msg', 'max_subject'))
lne = LineEditor(max_subject, msg.subject)
lne.highlight = term.yellow_reverse
echo(u'\r\n\r\n SUBjECt: ')
subject = lne.read()
if subject is None or 0 == len(subject):
return False
msg.subject = subject
return True
开发者ID:signalpillar,项目名称:x84,代码行数:13,代码来源:writemsg.py
示例13: prompt_yesno
def prompt_yesno(question):
""" yes/no user prompt. """
term = getterminal()
sep = getattr(term, color_secondary)(u'**')
colors = {'highlight': getattr(term, color_secondary)}
echo(fixate_next(term, newlines=1))
while True:
echo(u'{sep} {question} [yn] ?\b\b'.format(sep=sep, question=question))
yn = LineEditor(colors=colors, width=1).read() or u''
if yn.lower() in (u'y', u'n'):
return yn.lower() == u'y'
echo(term.move_x(0) + term.clear_eol)
echo(fixate_next(term, newlines=0))
开发者ID:tehmaze,项目名称:x84,代码行数:13,代码来源:nua.py
示例14: prompt_subject
def prompt_subject(term, msg, colors):
""" Prompt for subject of message. """
xpos = max(0, (term.width // 2) - (80 // 2))
echo(u"".join((term.move_x(xpos), term.clear_eos, u"Enter Subject.\r\n", term.move_x(xpos), u":: ")))
inp = LineEditor(subject_max_length, msg.subject, colors={"highlight": colors["backlight"]}).read()
if inp is None or not inp.strip():
echo(u"".join((term.move_x(xpos), colors["highlight"]("Canceled."), term.clear_eol)))
term.inkey(1)
return False
msg.subject = inp.strip()
return True
开发者ID:gofore,项目名称:x84,代码行数:13,代码来源:msgarea.py
示例15: on_nicknameinuse
def on_nicknameinuse(self, connection, event):
""" Nick is being used; pick another one. """
# pylint:disable=W0613
self.session.send_event('route', (self.session.sid, 'irc-connected'))
self.connected = True
echo(u''.join([self.term.normal, self.term.clear,
u'Your nickname is in use or illegal. Pick a new one '
u'(blank to quit):\r\n']))
led = LineEditor(width=MAX_NICK)
newnick = led.read()
echo(u'\r\n')
if not newnick:
self.session.send_event('route', (self.session.sid, 'irc-quit'))
return
connection.nick(newnick)
开发者ID:tehmaze,项目名称:x84,代码行数:15,代码来源:ircchat.py
示例16: do_intro_art
def do_intro_art(term, session):
"""
Display random art file, prompt for quick login.
Bonus: allow chosing other artfiles with '<' and '>'.
"""
from x84.bbs import ini
show_intro_art = False
if ini.CFG.has_option('system', 'show_intro_art'):
show_intro_art = ini.CFG.getboolean('system', 'show_intro_art')
# set syncterm font, if any
if syncterm_font and term.kind.startswith('ansi'):
echo(syncterm_setfont(syncterm_font))
index = int(time.time()) % len(art_files)
dirty = True
echo(u'\r\n')
while True:
session.activity = 'top'
if session.poll_event('refresh') or dirty:
if show_intro_art:
display_intro(term, index)
else:
return True
display_prompt(term)
dirty = False
dirty = True
inp = LineEditor(1, colors={'highlight': term.normal}).read()
if inp is None or inp.lower() == u'y':
# escape/yes: quick login
return True
# issue #242 : set 'N' as default, by adding a check for an empty
# unicode string.
elif inp.lower() in (u'n', u'\r', u'\n', u''):
break
if len(inp) == 1:
echo(u'\b')
if inp == u'!':
echo(u'\r\n' * 3)
gosub('charset')
dirty = True
elif inp == u'<':
index -= 1
elif inp == u'>':
index += 1
else:
dirty = False
开发者ID:gofore,项目名称:x84,代码行数:48,代码来源:top.py
示例17: query_question
def query_question():
term = getterminal()
session = getsession()
db = DBProxy(databasename)
questions = []
index = []
uservotingdata = []
questions = db['questions']
index = db['index']
counter = 0
# create database for user if the user hasn't made any votes
if not session.user.handle in db:
db[session.user.handle] = {}
uservotingdata = db[session.user.handle]
echo(term.clear() + term.blue + '>>' + term.white + 'questions availible\r\n' +
term.blue + '---------------------\r\n\r\n' + term.white)
for i in range(0, len(questions)):
if (index[i], 0) in uservotingdata:
# prints out a star to show that the user already voted on this
# question
echo(term.green + '*')
echo(term.magenta + '(' + term.cyan + str(i) + term.magenta + ') ' +
term.white + questions[i] + '\r\n')
# if the list of questions is longer than the screen height, display a
# press enter prompt
counter = counter + 1
if counter > term.height - 7:
counter = 0
waitprompt()
echo(term.move_x(0) + term.clear_eol + term.move_up)
echo(term.bold_black + '* = already voted\r\n\r\n' + term.normal)
while True:
echo(
term.magenta + '\rselect one of the questions above or press enter to return: ')
le = LineEditor(30)
le.colors['highlight'] = term.cyan
inp = le.read()
if inp.isnumeric() and int(inp) < len(questions):
return int(inp)
else:
# 999 in this case means that no valid option was chosen.. break
# loop.
return 999
开发者ID:tehmaze,项目名称:x84,代码行数:48,代码来源:vote.py
示例18: prompt_input
def prompt_input(term, key, **kwargs):
""" Prompt for user input. """
sep_ok = getattr(term, color_secondary)(u'::')
sep_bad = getattr(term, color_primary)(u'::')
colors = {'highlight': getattr(term, color_primary)}
echo(fixate_next(term))
echo(u'{sep} {key:>18}: '.format(sep=sep_ok, key=key))
entry = LineEditor(colors=colors, **kwargs).read() or u''
if not entry.strip():
echo(fixate_next(term))
echo(u'{sep} Canceled !\r\n'.format(sep=sep_bad))
log.debug('Password reset canceled at prompt key={0}.'.format(key))
return u''
return entry
开发者ID:ztaylor,项目名称:x84,代码行数:16,代码来源:pwreset.py
示例19: query_question
def query_question():
term = getterminal()
session = getsession()
db = DBProxy(databasename)
questions = []
index = []
uservotingdata = []
questions = db['questions']
index = db['index']
# create a new database file if none exists
if not session.user.handle in db:
db[session.user.handle] = {}
uservotingdata = db[session.user.handle]
echo(term.clear() + term.blue(u'>>') + term.white(u'questions availible\r\n') +
term.blue(u'-' * 21 + '\r\n\r\n'))
text = ''
for i in range(0, len(questions)):
if (index[i], 0) in uservotingdata:
text = text + term.green(u'*')
text = text + u''.join(term.magenta + u'(' + term.cyan + str(i) + term.magenta + u') ' +
term.white + questions[i] + u'\r\n')
text = text.splitlines()
prompt_pager(content=text,
line_no=0,
colors={'highlight': term.cyan,
'lowlight': term.green,
},
width=term.width, breaker=None, end_prompt=False)
echo(term.move_x(0) + term.bold_black(u'* = already voted\r\n\r\n'))
while True:
echo(term.move_x(
0) + term.magenta(u'select one of the questions above or press enter to return: '))
le = LineEditor(10)
le.colors['highlight'] = term.cyan
inp = le.read()
if inp is not None and inp.isnumeric() and int(inp) < len(questions):
return int(inp)
else:
# -1 in this case means that no valid option was chosen.. break
# loop.
return -1
开发者ID:adammendoza,项目名称:x84,代码行数:45,代码来源:vote.py
示例20: more
def more(cont=False):
"""
Returns True if user 'q'uit; otherwise False
when prompting is complete (moar/next/whatever)
"""
from x84.bbs import echo, getch, getterminal, LineEditor, DBProxy
prompt_key = u'\r\n\r\nENtER BBS iD: '
msg_badkey = u'\r\n\r\nbbS id iNVAliD!'
term = getterminal()
prompt = u', '.join(fancy_blue(char, blurb)
for char, blurb in
(('i', 'NfO',),
('a', 'dd',),
('c', 'OMMENt',),
('r', 'AtE',),
('t', 'ElNEt',),
('v', 'ANSi'),
('q', 'Uit',)))
if cont:
prompt += u', ' + fancy_blue(' ', 'more')
prompt += u': '
while True:
echo(u'\r\n')
echo(u'\r\n'.join(term.wrap(text=prompt,
width=(term.width - (term.width / 3)))))
inp = getch()
if inp in (u'q', 'Q'):
return True
elif inp is not None and type(inp) is not int:
if cont and inp == u' ':
echo(u'\r\n\r\n')
return False
if inp.lower() in u'acrtviACRTVI':
# these keystrokes require a bbs key argument,
# prompt the user for one
echo(prompt_key)
key = LineEditor(5).read()
if (key is None or 0 == len(key.strip())
or not key in DBProxy('bbslist')):
echo(msg_badkey)
continue
process_keystroke(inp, key)
开发者ID:hick,项目名称:x84,代码行数:42,代码来源:bbslist.py
注:本文中的x84.bbs.LineEditor类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论