@djl or
import ui
import time
import dialogs
from objc_util import *
def open_in_with_specified_activities(path_in,uiview):
global handler_done,SUIViewController_service
handler_done = False
SUIViewController_service = None
def handler(_cmd,obj1_ptr,_error):
global handler_done,SUIViewController_service
# obj1_ptr = None if no service selected
if obj1_ptr:
obj1 = ObjCInstance(obj1_ptr)
SUIViewController_service = str(obj1)
handler_done = True
return
vo = ObjCInstance(uiview)
SUIViewController = ObjCClass('SUIViewController')
root_vc = SUIViewController.viewControllerForView_(vo)
main_view = root_vc.view()
handler_block = ObjCBlock(handler, restype=None, argtypes=[c_void_p, c_void_p, c_void_p])
if type(path_in) is list or type(path_in) is tuple:
path = path_in
else:
path = [path_in]
url_array = []
for elem in path:
url_array.append(nsurl(elem))
UIActivityViewController = ObjCClass('UIActivityViewController').alloc().initWithActivityItems_applicationActivities_(url_array,None)
UIActivityViewController.setCompletionWithItemsHandler_(handler_block)
UIActivityViewController.popoverPresentationController().sourceView = main_view
UIActivityViewController.popoverPresentationController().sourceRect = CGRect(CGPoint(10,10), CGSize(uiview.width,uiview.height))
root_vc.presentViewController_animated_completion_(UIActivityViewController, True, None)
while not handler_done:
time.sleep(1)
if SUIViewController_service == None:
SUIViewController_service = 'None' # for checking at return and use in alert
return SUIViewController_service
v = ui.View()
v.frame = (0,0,600,400)
v.background_color = 'white'
v.present('sheet')
service = open_in_with_specified_activities('sample.gpx', v)
print(service)
v.close()