Advertising
- Unnamed
- Friday, July 28th, 2006 at 6:52:53am MDT
- #
- # interactive_console.py
- #
- # An implementation of a trivial interactive Python console for
- # Series 60 Python environment. Based on 'code' module and
- # 'series60_console'.
- #
- # Copyright (c) 2005 Nokia Corporation
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- #
- import appuifw
- from key_codes import EKeyDevice3
- class Py_console:
- def __init__(self, console):
- self.co = console
- self.co.control.bind(EKeyDevice3, self.handle_ok_press)
- self.history = ['','','','','']
- self.history_item = 4
- def handle_ok_press(self):
- self.co.write(u'\n')
- self.co.input_wait_lock.signal()
- def readfunc(self, prompt):
- self.co.write(unicode(prompt))
- user_input = self.co.readline()
- self.history.append(user_input)
- self.history.pop(0)
- self.history_item = 4
- return user_input
- def clear_screen(self):
- self.co.clear()
- self.co.input_wait_lock.signal()
- self.readfunc(sys.ps1)
- def previous_input(self):
- if self.history_item == -1:
- return
- elif self.history_item == 4:
- self.line_beg = self.co.control.len()
- else:
- self.co.control.delete(self.line_beg,
- self.line_beg+\
- len(self.history[self.history_item]))
- self.co.control.set_pos(self.line_beg)
- self.co.write(self.history[self.history_item])
- self.history_item -= 1
- def interactive_loop(self, scope = locals()):
- import code
- appuifw.app.menu.append((u"Clear screen", self.co.clear_screen))
- appuifw.app.menu.append((u"Previous command", self.previous_input))
- self.co.clear()
- code.interact(None, self.readfunc, scope)
- self.co.control.bind(EKeyDevice3, None)
- self.history = []
- appuifw.app.menu = []
- if __name__ == '__main__':
- try:
- console = my_console
- except NameError:
- import series60_console
- console = series60_console.Console()
- appuifw.app.body = console.control
- Py_console(console).interactive_loop()
advertising
Update the Post
Either update this post and resubmit it with changes, or make a new post.
You may also comment on this post.
Please note that information posted here will expire by default in one month. If you do not want it to expire, please set the expiry time above. If it is set to expire, web search engines will not be allowed to index it prior to it expiring. Items that are not marked to expire will be indexable by search engines. Be careful with your passwords. All illegal activities will be reported and any information will be handed over to the authorities, so be good.