def share_clicked(self, touch): from modules.core.android_utils import LogTestFairy action = touch.key Logger.info('ShareDialog: %s clicked' % action) LogTestFairy('Share post on %s' % action) from modules.core.tempstorage import get_temp_folder_prefix fname = get_temp_folder_prefix() + 'share.jpg' Logger.info('ShareDialog: Storing image to %s' % fname) try: self.item.texture.save(fname) except: Logger.info('ShareDialog: failed Storing %s' % fname) self.dispatch('on_close') return # make sure everyone can access it Logger.info('ShareDialog: Done Storing %s' % fname) provider = self.get_key_in_providers(action) from kivy import platform if platform == 'ios': from pyobjus import autoclass, objc_str ObjcClass = autoclass('ShareViewControllerINDR') self.o_instance = ObjcClass.alloc().init() self.o_instance.aTitle = objc_str(SHARE_LINK) self.o_instance.aFileName = objc_str(fname) self.o_instance.aApp = objc_str(action) self.o_instance.aURL = objc_str('http://insiderr.com') self.o_instance.shareImagePost() elif platform == 'android': from jnius import autoclass, cast AndroidString = autoclass('java.lang.String') Uri = autoclass('android.net.Uri') # start android intent stuff File = autoclass('java.io.File') sharedFile = File(fname) phototUri = Uri.fromFile(sharedFile) Intent = autoclass('android.content.Intent') shareIntent = Intent(Intent.ACTION_SEND) shareIntent.setType("image/*") shareIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) if provider: shareIntent.setPackage(provider) if 'facebook' in action: shareIntent.putExtra(Intent.EXTRA_TEXT, AndroidString("http://insiderr.com")) else: shareIntent.putExtra(Intent.EXTRA_TEXT, AndroidString(SHARE_LINK)) shareIntent.putExtra("sms_body", AndroidString(SHARE_LINK)) shareIntent.putExtra(Intent.EXTRA_STREAM, cast('android.os.Parcelable', phototUri)) PythonActivity = autoclass('org.renpy.android.PythonActivity') theActivity = PythonActivity.mActivity chooser_title = cast('java.lang.CharSequence', AndroidString('Share Via')) theActivity.startActivity(Intent.createChooser(shareIntent, chooser_title)) self.dispatch('on_close') LogTestFairy('Shared post successfully')
def _load_urllib(self, filename, kwargs): '''(internal) Loading a network file. First download it, save it to a temporary file, and pass it to _load_local().''' if PY2: import urllib2 as urllib_request else: import urllib.request as urllib_request proto = filename.split(':', 1)[0] if proto == 'smb': try: # note: it's important to load SMBHandler every time # otherwise the data is occasionaly not loaded from smb.SMBHandler import SMBHandler except ImportError: Logger.warning( 'Loader: can not load PySMB: make sure it is installed') return _BINARY = 0 import glob import tempfile from kivy import platform if platform in ['win', 'windows']: from os import O_BINARY _BINARY = O_BINARY data = fd = _out_osfd = None try: # check if we already have the file locally filename_hash = CRC64digest(filename) filename_hashed_no_ext = get_temp_folder_prefix()+filename_hash filename_hash_cached = glob.glob(filename_hashed_no_ext+'.*') #Logger.info('url_load: <%s> %s <%s> %s' % (filename,filename_hash,filename_hashed_no_ext,filename_hash_cached)) data = None if len(filename_hash_cached) > 0: # load data Logger.info('AsyncImageOpenCV: Loading local cached <%s>' % filename_hash_cached[0]) try: data = self._load_local(filename_hash_cached[0], kwargs) except Exception: data = None # try to download if data is None: Logger.info('AsyncImageOpenCV: download <%s>' % filename) if proto == 'smb': # read from samba shares fd = urllib_request.build_opener(SMBHandler).open(filename) else: # read from internet fd = urllib_request.urlopen(filename) idata = fd.read() info = fd.info() fd.close() fd = None if 'content-type' in info.keys(): suffix = mimetypes.guess_extension(info['content-type']) else: suffix = '.%s' % (filename.split('.')[-1]) _out_filename = filename_hashed_no_ext+suffix # write to local filename _out_osfd = openfile(_out_filename, O_RDWR | O_CREAT | _BINARY) write(_out_osfd, idata) close(_out_osfd) _out_osfd = None # load data data = self._load_local(_out_filename, kwargs) # FIXME create a clean API for that for imdata in data._data: imdata.source = filename except Exception: Logger.exception('Failed to load image <%s>' % filename) # close file when remote file not found or download error try: close(_out_osfd) _out_osfd = None except OSError: pass return self.error_image finally: if fd: fd.close() if _out_osfd: close(_out_osfd) #if _out_filename != '': # unlink(_out_filename) return data
def share_clicked(self, touch): from modules.core.android_utils import LogTestFairy action = touch.key Logger.info('ShareDialog: %s clicked' % action) LogTestFairy('Share post on %s' % action) from modules.core.tempstorage import get_temp_folder_prefix fname = get_temp_folder_prefix() + 'share.jpg' Logger.info('ShareDialog: Storing image to %s' % fname) try: self.item.texture.save(fname) except: Logger.info('ShareDialog: failed Storing %s' % fname) self.dispatch('on_close') return # make sure everyone can access it Logger.info('ShareDialog: Done Storing %s' % fname) provider = self.get_key_in_providers(action) from kivy import platform if platform == 'ios': from pyobjus import autoclass, objc_str ObjcClass = autoclass('ShareViewControllerINDR') self.o_instance = ObjcClass.alloc().init() self.o_instance.aTitle = objc_str(SHARE_LINK) self.o_instance.aFileName = objc_str(fname) self.o_instance.aApp = objc_str(action) self.o_instance.aURL = objc_str('http://insiderr.com') self.o_instance.shareImagePost() elif platform == 'android': from jnius import autoclass, cast AndroidString = autoclass('java.lang.String') Uri = autoclass('android.net.Uri') # start android intent stuff File = autoclass('java.io.File') sharedFile = File(fname) phototUri = Uri.fromFile(sharedFile) Intent = autoclass('android.content.Intent') shareIntent = Intent(Intent.ACTION_SEND) shareIntent.setType("image/*") shareIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) if provider: shareIntent.setPackage(provider) if 'facebook' in action: shareIntent.putExtra(Intent.EXTRA_TEXT, AndroidString("http://insiderr.com")) else: shareIntent.putExtra(Intent.EXTRA_TEXT, AndroidString(SHARE_LINK)) shareIntent.putExtra("sms_body", AndroidString(SHARE_LINK)) shareIntent.putExtra(Intent.EXTRA_STREAM, cast('android.os.Parcelable', phototUri)) PythonActivity = autoclass('org.renpy.android.PythonActivity') theActivity = PythonActivity.mActivity chooser_title = cast('java.lang.CharSequence', AndroidString('Share Via')) theActivity.startActivity( Intent.createChooser(shareIntent, chooser_title)) self.dispatch('on_close') LogTestFairy('Shared post successfully')