Advertisement
Guest User

Untitled

a guest
Feb 10th, 2016
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.68 KB | None | 0 0
  1. # coding: utf-8
  2.  
  3. from objc_util import *
  4. from UIKit import *
  5. from Foundation import *
  6. from ReplayKit import *
  7. from console import alert
  8.  
  9. def main():
  10. rootVC = UIApplication.sharedApplication().keyWindow().rootViewController()
  11. tabVC = rootVC.detailViewController()
  12.  
  13. methods = [screenRecorderButtonPressed]
  14. ScreenRecorderItemController = create_objc_class('ScreenRecorderItemController', NSObject, methods = methods)
  15.  
  16. screenRecorderItemController = ScreenRecorderItemController.new()
  17.  
  18. try:
  19. ScreenRecorderBarButtonItem = ObjCClass('ScreenRecorderBarButtonItem')
  20. except ValueError:
  21. ScreenRecorderBarButtonItem = create_objc_class('ScreenRecorderBarButtonItem', UIBarButtonItem)
  22.  
  23. screenRecorderItem = ScreenRecorderBarButtonItem.alloc().initWithImage_style_target_action_(ns(ui.Image.named('iob:ios7_videocam_outline_32')), 0, screenRecorderItemController, sel('screenRecorderButtonPressed'))
  24. screenRecorderItemController.screenRecorderItem = screenRecorderItem
  25.  
  26. leftBarButtonItems = list(tabVC.persistentLeftBarButtonItems())
  27. leftBarButtonItems.append(screenRecorderItem)
  28. tabVC.persistentLeftBarButtonItems = ns(leftBarButtonItems)
  29. tabVC.reloadBarButtonItemsForSelectedTab()
  30.  
  31. def screenRecorderButtonPressed(_self, _cmd):
  32. from objc_util import ObjCInstance
  33. from ReplayKit import RPScreenRecorder
  34. from console import alert
  35. rootVC = UIApplication.sharedApplication().keyWindow().rootViewController()
  36. tabVC = rootVC.detailViewController()
  37. screenRecorderItem = None
  38. for item in tabVC.persistentLeftBarButtonItems():
  39. if item._get_objc_classname().endswith('ScreenRecorderBarButtonItem'):
  40. screenRecorderItem = item
  41. recorder = RPScreenRecorder.sharedRecorder()
  42. if recorder.isRecording():
  43. def recordingStoppedHandler(_cmd, _previewViewController, _error):
  44. if _previewViewController:
  45. screenRecorderItem.image = ns(ui.Image.named('iob:ios7_videocam_outline_32'))
  46. previewViewController = ObjCInstance(_previewViewController)
  47. def previewControllerDidFinish_(_self, _cmd, _previewViewController):
  48. previewViewController = ObjCInstance(_previewViewController)
  49. rootVC = UIApplication.sharedApplication().keyWindow().rootViewController()
  50. on_main_thread(rootVC.dismissViewControllerAnimated_completion_)(True, None)
  51. PreviewControllerDelegate = create_objc_class('PreviewControllerDelegate', NSObject, protocols = ['RPPreviewViewControllerDelegate'], methods = [previewControllerDidFinish_])
  52. previewViewController.previewControllerDelegate = PreviewControllerDelegate.new()
  53. previewViewController.modalPresentationStyle = 0
  54. rootVC = UIApplication.sharedApplication().keyWindow().rootViewController()
  55. rootVC.presentViewController_animated_completion_(previewViewController, True, None)
  56. if _error:
  57. error = ObjCInstance(_error)
  58. print error
  59.  
  60. recordingStoppedHandlerBlock = ObjCBlock(recordingStoppedHandler, None, [c_void_p, c_void_p, c_void_p])
  61. retain_global(recordingStoppedHandlerBlock)
  62. recorder.stopRecordingWithHandler_(recordingStoppedHandlerBlock)
  63. else:
  64. micEnabled = not bool(alert('Record Screen', 'Start recording Pythonista?', 'Start Recording with Mic', 'Start Recording without Mic') - 1)
  65. def recordingStartedHandler(_self, _cmd, _error):
  66. if _error:
  67. error = ObjCInstance(_error)
  68. print error.localizedDescription()
  69. elif RPScreenRecorder.sharedRecorder().isRecording():
  70. screenRecorderItem.image = ns(ui.Image.named('iob:ios7_videocam_32'))
  71. recordingStartedHandlerBlock = ObjCBlock(recordingStartedHandler, None, [c_void_p, c_void_p, c_void_p])
  72. retain_global(recordingStartedHandlerBlock)
  73. if recorder.isAvailable():
  74. recorder.startRecordingWithMicrophoneEnabled_handler_(micEnabled, recordingStartedHandlerBlock)
  75.  
  76. if __name__ == '__main__':
  77. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement