コード例 #1
0
ファイル: main.py プロジェクト: simon816/PyS60-Projects
class GithubMobile:
 """ The main class and interface """
 def __init__(self):
  lock=e32.Ao_lock()
  self.directory=DIRECTORY
  if not os.path.exists(self.directory):
   os.makedirs(self.directory)
  os.chdir(self.directory)
  self.Users=UserManager(self.directory)
  self.start()
  self.RequestHost=NetworkManager
  self.RepositoryHost=RepositoryManager(self.RequestHost)
  self.mainlock=lock
  lock.wait()
 def start(self):
  items=[u'Create User']
  items+=self.Users.listUsers()
  appuifw.app.body=appuifw.Listbox(items,self.choose)
  appuifw.app.menu=[
   (u'Login',self.choose),
   (u'Delete',lambda:self.Users.deleteUser(items[appuifw.app.body.current()])),
   (u'Exit',self.quit)]
  appuifw.app.title=u'Github Mobile'
  appuifw.app.exit_key_handler=self.quit
 def quit(self):
  self.mainlock.signal()
  self.RequestHost.close()
  self.Users.forgetAll()
  self.RepositoryHost.closeAll()
 def choose(self):
  i=appuifw.app.body.current()
  if i==0:
   n=appuifw.multi_query(u'Displayname',u'Username')
   if n is None:return
   p=appuifw.query(u'Password','code')
   if p is None:return
   self.Users.addUser(n[0],n[1],p)
   self.start()
   return
  user=self.Users.listUsers()[i-1]
  uname=self.Users.getUser(user)[0]
  self.RequestHost.headers['Authorization']=self.Users.HTTPBasicUser(user)
  resp=self.RequestHost.GET('/user/repos')
  try:json=resp.parseJson()
  except resp.ClientError,e:
   appuifw.note(unicode(e.json['message']),'error')
   return
  util.mkdir([uname])
  os.chdir(uname)
  self.RepositoryHost.loadRepos(json)
  self.displayRepos()