From fdea3df9b1436ef40d313ea6edbb56d633fdd527 Mon Sep 17 00:00:00 2001 From: MaximiliumM Date: Wed, 28 Mar 2018 05:33:50 +0000 Subject: [PATCH] Added iCloud support --- dropdown.py | 5 +++-- gitui.py | 16 ++++++++++++---- repo_finder.py | 13 +++++++++++-- 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/dropdown.py b/dropdown.py index 8a3e3f6..95d73dd 100644 --- a/dropdown.py +++ b/dropdown.py @@ -19,6 +19,7 @@ def __init__(self,frame=(0,0,300,32),name='dropdown', items=[]): self.button.action=self.open_finder self.base=os.path.expanduser('~/Documents') + self.icloudpath='/private/var/mobile/Library/Mobile Documents/iCloud~com~omz-software~Pythonista3/Documents' self._abort=False self.items=items self.button.flex='l' @@ -131,7 +132,7 @@ def action(self,value): if __name__=='__main__': d=DropdownView() - def file_generator(base=os.path.expanduser('~/Documents'),abortfcn=None): + def file_generator(base,icloud,abortfcn=None): if not abortfcn: abortfcn=lambda : False def iterfn(): @@ -145,4 +146,4 @@ def iterfn(): d.items=file_generator(abortfcn=d.abort) - d.present() \ No newline at end of file + d.present() diff --git a/gitui.py b/gitui.py index 571b34d..d5a4660 100644 --- a/gitui.py +++ b/gitui.py @@ -224,13 +224,17 @@ def scrollview_did_scroll(self, scrollview): self.refresh() #Get the parent git repo, if there is one - def _repo_path(self): - return os.path.join(self.view['repo'].base, self.view['repo'].text) + def _repo_path(self, path): + repo_path = os.path.join(path, self.view['repo'].text) + return repo_path def _get_repo(self): try: - repopath=self._repo_path() + repopath=self._repo_path(self.view['repo'].base) repobase=self._find_repo(repopath) + if repobase is None: + repopath=self._repo_path(self.view['repo'].icloudpath) + repobase=self._find_repo(repopath) if repobase: return Gittle(repobase) except: @@ -635,6 +639,8 @@ def log_action(self, sender): import show_log show_log.main(self) + def icloud_switch(self, sender): + fdd.icloud = sender.value r=repoView() @@ -642,6 +648,7 @@ def log_action(self, sender): r.view=v fdd=v['repo'] fdd.filter='.git' +fdd.icloud=v['icloud_switch'].value fdd.textfield.action=r.did_select_repo v['branch'].items=r.branch_iterator v['remotebranch'].items=r.remote_branches_iterator @@ -656,6 +663,7 @@ def log_action(self, sender): v['new'].action=r.new_action v['resetPW'].action=r.resetPW v['log'].action=r.log_action +v['icloud_switch'].action=r.icloud_switch #load current repo editorpath=os.path.split(editor.get_path())[0] if editorpath.startswith('/var'): @@ -668,4 +676,4 @@ def log_action(self, sender): v.present('panel') if v['repo'].text: - r.did_select_repo(v['repo']) \ No newline at end of file + r.did_select_repo(v['repo']) diff --git a/repo_finder.py b/repo_finder.py index 8c31603..fd40eda 100644 --- a/repo_finder.py +++ b/repo_finder.py @@ -1,9 +1,11 @@ import dropdown, os, fnmatch class FilteredDirDropdown(dropdown.DropdownView): - def __init__(self,frame=(0,0,300,32),name='dropdown', filter='*',base=os.path.expanduser('~/Documents'), exclude='.Trash'): + def __init__(self,frame=(0,0,300,32),name='dropdown', filter='*',base=os.path.expanduser('~/Documents'), icloud=False, exclude='.Trash'): self.frame=frame self.filter=filter self.base=base + self.icloudpath='/private/var/mobile/Library/Mobile Documents/iCloud~com~omz-software~Pythonista3/Documents' + self.icloud=icloud self.exclude=exclude super(type(self),self).__init__( frame=frame, @@ -17,4 +19,11 @@ def path_generator(self): if self.abort(): return if fnmatch.fnmatch(d,self.filter) and self.exclude not in rootpath: - yield os.path.relpath(rootpath,self.base) \ No newline at end of file + yield os.path.relpath(rootpath,self.base) + if self.icloud: + for rootpath,dirs,_ in os.walk(self.icloudpath): + for d in dirs: + if self.abort(): + return + if fnmatch.fnmatch(d,self.filter) and self.exclude not in rootpath: + yield os.path.relpath(rootpath,self.icloudpath)