rufus 0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (275) hide show
  1. data/.gitignore +61 -0
  2. data/.gitmodules +6 -0
  3. data/Gemfile +7 -0
  4. data/Gemfile.lock +51 -0
  5. data/README.md +120 -0
  6. data/RufusApp/Frank/features/my_first.feature +12 -0
  7. data/RufusApp/Frank/features/step_definitions/launch_steps.rb +20 -0
  8. data/RufusApp/Frank/features/support/env.rb +8 -0
  9. data/RufusApp/Frank/frank_static_resources.bundle/ViewAttributeMapping.plist +63 -0
  10. data/RufusApp/Frank/frank_static_resources.bundle/ViewAttributeMappingMac.plist +99 -0
  11. data/RufusApp/Frank/frank_static_resources.bundle/images/ajax-loader.gif +0 -0
  12. data/RufusApp/Frank/frank_static_resources.bundle/images/file.gif +0 -0
  13. data/RufusApp/Frank/frank_static_resources.bundle/images/folder-closed.gif +0 -0
  14. data/RufusApp/Frank/frank_static_resources.bundle/images/folder.gif +0 -0
  15. data/RufusApp/Frank/frank_static_resources.bundle/images/loader.gif +0 -0
  16. data/RufusApp/Frank/frank_static_resources.bundle/images/loader.png +0 -0
  17. data/RufusApp/Frank/frank_static_resources.bundle/images/minus.gif +0 -0
  18. data/RufusApp/Frank/frank_static_resources.bundle/images/plus.gif +0 -0
  19. data/RufusApp/Frank/frank_static_resources.bundle/images/treeview-black-line.gif +0 -0
  20. data/RufusApp/Frank/frank_static_resources.bundle/images/treeview-black.gif +0 -0
  21. data/RufusApp/Frank/frank_static_resources.bundle/images/treeview-default-line.gif +0 -0
  22. data/RufusApp/Frank/frank_static_resources.bundle/images/treeview-default.gif +0 -0
  23. data/RufusApp/Frank/frank_static_resources.bundle/images/treeview-famfamfam-line.gif +0 -0
  24. data/RufusApp/Frank/frank_static_resources.bundle/images/treeview-famfamfam.gif +0 -0
  25. data/RufusApp/Frank/frank_static_resources.bundle/images/treeview-gray-line.gif +0 -0
  26. data/RufusApp/Frank/frank_static_resources.bundle/images/treeview-gray.gif +0 -0
  27. data/RufusApp/Frank/frank_static_resources.bundle/images/treeview-red-line.gif +0 -0
  28. data/RufusApp/Frank/frank_static_resources.bundle/images/treeview-red.gif +0 -0
  29. data/RufusApp/Frank/frank_static_resources.bundle/index.html +86 -0
  30. data/RufusApp/Frank/frank_static_resources.bundle/index.html.haml +76 -0
  31. data/RufusApp/Frank/frank_static_resources.bundle/js/accessible_views_view.coffee +41 -0
  32. data/RufusApp/Frank/frank_static_resources.bundle/js/accessible_views_view.js +46 -0
  33. data/RufusApp/Frank/frank_static_resources.bundle/js/controller.coffee +134 -0
  34. data/RufusApp/Frank/frank_static_resources.bundle/js/controller.js +139 -0
  35. data/RufusApp/Frank/frank_static_resources.bundle/js/details_view.coffee +42 -0
  36. data/RufusApp/Frank/frank_static_resources.bundle/js/details_view.js +51 -0
  37. data/RufusApp/Frank/frank_static_resources.bundle/js/dropdown_control.coffee +64 -0
  38. data/RufusApp/Frank/frank_static_resources.bundle/js/dropdown_control.js +73 -0
  39. data/RufusApp/Frank/frank_static_resources.bundle/js/ersatz_model.coffee +46 -0
  40. data/RufusApp/Frank/frank_static_resources.bundle/js/ersatz_model.js +60 -0
  41. data/RufusApp/Frank/frank_static_resources.bundle/js/ersatz_view.coffee +167 -0
  42. data/RufusApp/Frank/frank_static_resources.bundle/js/ersatz_view.js +205 -0
  43. data/RufusApp/Frank/frank_static_resources.bundle/js/experiment_bar_model.coffee +10 -0
  44. data/RufusApp/Frank/frank_static_resources.bundle/js/experiment_bar_model.js +17 -0
  45. data/RufusApp/Frank/frank_static_resources.bundle/js/experiment_bar_view.coffee +44 -0
  46. data/RufusApp/Frank/frank_static_resources.bundle/js/experiment_bar_view.js +63 -0
  47. data/RufusApp/Frank/frank_static_resources.bundle/js/frank.coffee +96 -0
  48. data/RufusApp/Frank/frank_static_resources.bundle/js/frank.js +146 -0
  49. data/RufusApp/Frank/frank_static_resources.bundle/js/lib/backbone.js +1431 -0
  50. data/RufusApp/Frank/frank_static_resources.bundle/js/lib/coffee-script.js +8 -0
  51. data/RufusApp/Frank/frank_static_resources.bundle/js/lib/jquery-ui.min.js +405 -0
  52. data/RufusApp/Frank/frank_static_resources.bundle/js/lib/jquery.min.js +4 -0
  53. data/RufusApp/Frank/frank_static_resources.bundle/js/lib/jquery.treeview.js +251 -0
  54. data/RufusApp/Frank/frank_static_resources.bundle/js/lib/json2.js +481 -0
  55. data/RufusApp/Frank/frank_static_resources.bundle/js/lib/raphael.js +5815 -0
  56. data/RufusApp/Frank/frank_static_resources.bundle/js/lib/require.js +2053 -0
  57. data/RufusApp/Frank/frank_static_resources.bundle/js/lib/underscore.js +1059 -0
  58. data/RufusApp/Frank/frank_static_resources.bundle/js/main.coffee +27 -0
  59. data/RufusApp/Frank/frank_static_resources.bundle/js/main.js +29 -0
  60. data/RufusApp/Frank/frank_static_resources.bundle/js/tabs_controller.coffee +13 -0
  61. data/RufusApp/Frank/frank_static_resources.bundle/js/tabs_controller.js +22 -0
  62. data/RufusApp/Frank/frank_static_resources.bundle/js/toast_controller.coffee +15 -0
  63. data/RufusApp/Frank/frank_static_resources.bundle/js/toast_controller.js +28 -0
  64. data/RufusApp/Frank/frank_static_resources.bundle/js/transform_stack.coffee +59 -0
  65. data/RufusApp/Frank/frank_static_resources.bundle/js/transform_stack.js +78 -0
  66. data/RufusApp/Frank/frank_static_resources.bundle/js/tree_view.coffee +53 -0
  67. data/RufusApp/Frank/frank_static_resources.bundle/js/tree_view.js +64 -0
  68. data/RufusApp/Frank/frank_static_resources.bundle/js/view_hier_model.coffee +37 -0
  69. data/RufusApp/Frank/frank_static_resources.bundle/js/view_hier_model.js +48 -0
  70. data/RufusApp/Frank/frank_static_resources.bundle/js/view_model.coffee +39 -0
  71. data/RufusApp/Frank/frank_static_resources.bundle/js/view_model.js +62 -0
  72. data/RufusApp/Frank/frank_static_resources.bundle/pictos/index.html +329 -0
  73. data/RufusApp/Frank/frank_static_resources.bundle/pictos/pictos-web.eot +0 -0
  74. data/RufusApp/Frank/frank_static_resources.bundle/pictos/pictos-web.svg +114 -0
  75. data/RufusApp/Frank/frank_static_resources.bundle/pictos/pictos-web.ttf +0 -0
  76. data/RufusApp/Frank/frank_static_resources.bundle/pictos/pictos-web.woff +0 -0
  77. data/RufusApp/Frank/frank_static_resources.bundle/pictos/pictos.css +20 -0
  78. data/RufusApp/Frank/frank_static_resources.bundle/pictos/pictos_base64.css +18 -0
  79. data/RufusApp/Frank/frank_static_resources.bundle/stylesheets/css/symbiote.css +1 -0
  80. data/RufusApp/Frank/frank_static_resources.bundle/stylesheets/sass/_elements.scss +28 -0
  81. data/RufusApp/Frank/frank_static_resources.bundle/stylesheets/sass/_header.scss +61 -0
  82. data/RufusApp/Frank/frank_static_resources.bundle/stylesheets/sass/_inspect_tabs_list_tabs.scss +194 -0
  83. data/RufusApp/Frank/frank_static_resources.bundle/stylesheets/sass/_jquery.treeview.scss +68 -0
  84. data/RufusApp/Frank/frank_static_resources.bundle/stylesheets/sass/_jqui.scss +2 -0
  85. data/RufusApp/Frank/frank_static_resources.bundle/stylesheets/sass/_layout.scss +13 -0
  86. data/RufusApp/Frank/frank_static_resources.bundle/stylesheets/sass/_mixins.sass +137 -0
  87. data/RufusApp/Frank/frank_static_resources.bundle/stylesheets/sass/_reset.scss +32 -0
  88. data/RufusApp/Frank/frank_static_resources.bundle/stylesheets/sass/_selector_test_toolbar.scss +81 -0
  89. data/RufusApp/Frank/frank_static_resources.bundle/stylesheets/sass/_solarized.scss +16 -0
  90. data/RufusApp/Frank/frank_static_resources.bundle/stylesheets/sass/_typography.scss +11 -0
  91. data/RufusApp/Frank/frank_static_resources.bundle/stylesheets/sass/_unicode.scss +3 -0
  92. data/RufusApp/Frank/frank_static_resources.bundle/stylesheets/sass/_z_index.scss +2 -0
  93. data/RufusApp/Frank/frank_static_resources.bundle/stylesheets/sass/symbiote.scss +26 -0
  94. data/RufusApp/Frank/frankified_build/Applications/RufusApp.app/Default-568h@2x.png +0 -0
  95. data/RufusApp/Frank/frankified_build/Applications/RufusApp.app/Default.png +0 -0
  96. data/RufusApp/Frank/frankified_build/Applications/RufusApp.app/Default@2x.png +0 -0
  97. data/RufusApp/Frank/frankified_build/Applications/RufusApp.app/Info.plist +0 -0
  98. data/RufusApp/Frank/frankified_build/Applications/RufusApp.app/PkgInfo +1 -0
  99. data/RufusApp/Frank/frankified_build/Applications/RufusApp.app/ResourceRules.plist +25 -0
  100. data/RufusApp/Frank/frankified_build/Applications/RufusApp.app/RufusApp +0 -0
  101. data/RufusApp/Frank/frankified_build/Applications/RufusApp.app/RufusPageViewController.nib +0 -0
  102. data/RufusApp/Frank/frankified_build/Applications/RufusApp.app/_CodeSignature/CodeResources +60 -0
  103. data/RufusApp/Frank/frankified_build/Applications/RufusApp.app/embedded.mobileprovision +0 -0
  104. data/RufusApp/Frank/frankified_build/Applications/RufusApp.app/en.lproj/InfoPlist.strings +0 -0
  105. data/RufusApp/Frank/frankified_build/Applications/RufusApp.app/en.lproj/RUViewController.nib +0 -0
  106. data/RufusApp/Frank/frankified_build/Frankified.app/Default-568h@2x.png +0 -0
  107. data/RufusApp/Frank/frankified_build/Frankified.app/Default.png +0 -0
  108. data/RufusApp/Frank/frankified_build/Frankified.app/Default@2x.png +0 -0
  109. data/RufusApp/Frank/frankified_build/Frankified.app/Info.plist +51 -0
  110. data/RufusApp/Frank/frankified_build/Frankified.app/PkgInfo +1 -0
  111. data/RufusApp/Frank/frankified_build/Frankified.app/RufusApp +0 -0
  112. data/RufusApp/Frank/frankified_build/Frankified.app/RufusPageViewController.nib +0 -0
  113. data/RufusApp/Frank/frankified_build/Frankified.app/en.lproj/InfoPlist.strings +0 -0
  114. data/RufusApp/Frank/frankified_build/Frankified.app/en.lproj/RUViewController.nib +0 -0
  115. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/ViewAttributeMapping.plist +63 -0
  116. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/ViewAttributeMappingMac.plist +99 -0
  117. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/images/ajax-loader.gif +0 -0
  118. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/images/file.gif +0 -0
  119. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/images/folder-closed.gif +0 -0
  120. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/images/folder.gif +0 -0
  121. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/images/loader.gif +0 -0
  122. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/images/loader.png +0 -0
  123. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/images/minus.gif +0 -0
  124. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/images/plus.gif +0 -0
  125. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/images/treeview-black-line.gif +0 -0
  126. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/images/treeview-black.gif +0 -0
  127. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/images/treeview-default-line.gif +0 -0
  128. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/images/treeview-default.gif +0 -0
  129. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/images/treeview-famfamfam-line.gif +0 -0
  130. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/images/treeview-famfamfam.gif +0 -0
  131. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/images/treeview-gray-line.gif +0 -0
  132. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/images/treeview-gray.gif +0 -0
  133. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/images/treeview-red-line.gif +0 -0
  134. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/images/treeview-red.gif +0 -0
  135. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/index.html +86 -0
  136. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/index.html.haml +76 -0
  137. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/accessible_views_view.coffee +41 -0
  138. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/accessible_views_view.js +46 -0
  139. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/controller.coffee +134 -0
  140. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/controller.js +139 -0
  141. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/details_view.coffee +42 -0
  142. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/details_view.js +51 -0
  143. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/dropdown_control.coffee +64 -0
  144. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/dropdown_control.js +73 -0
  145. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/ersatz_model.coffee +46 -0
  146. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/ersatz_model.js +60 -0
  147. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/ersatz_view.coffee +167 -0
  148. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/ersatz_view.js +205 -0
  149. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/experiment_bar_model.coffee +10 -0
  150. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/experiment_bar_model.js +17 -0
  151. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/experiment_bar_view.coffee +44 -0
  152. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/experiment_bar_view.js +63 -0
  153. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/frank.coffee +96 -0
  154. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/frank.js +146 -0
  155. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/lib/backbone.js +1431 -0
  156. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/lib/coffee-script.js +8 -0
  157. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/lib/jquery-ui.min.js +405 -0
  158. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/lib/jquery.min.js +4 -0
  159. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/lib/jquery.treeview.js +251 -0
  160. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/lib/json2.js +481 -0
  161. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/lib/raphael.js +5815 -0
  162. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/lib/require.js +2053 -0
  163. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/lib/underscore.js +1059 -0
  164. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/main.coffee +27 -0
  165. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/main.js +29 -0
  166. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/tabs_controller.coffee +13 -0
  167. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/tabs_controller.js +22 -0
  168. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/toast_controller.coffee +15 -0
  169. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/toast_controller.js +28 -0
  170. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/transform_stack.coffee +59 -0
  171. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/transform_stack.js +78 -0
  172. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/tree_view.coffee +53 -0
  173. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/tree_view.js +64 -0
  174. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/view_hier_model.coffee +37 -0
  175. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/view_hier_model.js +48 -0
  176. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/view_model.coffee +39 -0
  177. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/js/view_model.js +62 -0
  178. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/pictos/index.html +329 -0
  179. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/pictos/pictos-web.eot +0 -0
  180. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/pictos/pictos-web.svg +114 -0
  181. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/pictos/pictos-web.ttf +0 -0
  182. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/pictos/pictos-web.woff +0 -0
  183. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/pictos/pictos.css +20 -0
  184. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/pictos/pictos_base64.css +18 -0
  185. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/stylesheets/css/symbiote.css +1 -0
  186. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/stylesheets/sass/_elements.scss +28 -0
  187. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/stylesheets/sass/_header.scss +61 -0
  188. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/stylesheets/sass/_inspect_tabs_list_tabs.scss +194 -0
  189. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/stylesheets/sass/_jquery.treeview.scss +68 -0
  190. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/stylesheets/sass/_jqui.scss +2 -0
  191. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/stylesheets/sass/_layout.scss +13 -0
  192. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/stylesheets/sass/_mixins.sass +137 -0
  193. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/stylesheets/sass/_reset.scss +32 -0
  194. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/stylesheets/sass/_selector_test_toolbar.scss +81 -0
  195. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/stylesheets/sass/_solarized.scss +16 -0
  196. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/stylesheets/sass/_typography.scss +11 -0
  197. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/stylesheets/sass/_unicode.scss +3 -0
  198. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/stylesheets/sass/_z_index.scss +2 -0
  199. data/RufusApp/Frank/frankified_build/Frankified.app/frank_static_resources.bundle/stylesheets/sass/symbiote.scss +26 -0
  200. data/RufusApp/Frank/frankified_build/RufusApp.app/Default-568h@2x.png +0 -0
  201. data/RufusApp/Frank/frankified_build/RufusApp.app/Default.png +0 -0
  202. data/RufusApp/Frank/frankified_build/RufusApp.app/Default@2x.png +0 -0
  203. data/RufusApp/Frank/frankified_build/RufusApp.app/Info.plist +0 -0
  204. data/RufusApp/Frank/frankified_build/RufusApp.app/PkgInfo +1 -0
  205. data/RufusApp/Frank/frankified_build/RufusApp.app/ResourceRules.plist +25 -0
  206. data/RufusApp/Frank/frankified_build/RufusApp.app/RufusApp +0 -0
  207. data/RufusApp/Frank/frankified_build/RufusApp.app/RufusPageViewController.nib +0 -0
  208. data/RufusApp/Frank/frankified_build/RufusApp.app/_CodeSignature/CodeResources +60 -0
  209. data/RufusApp/Frank/frankified_build/RufusApp.app/embedded.mobileprovision +0 -0
  210. data/RufusApp/Frank/frankified_build/RufusApp.app/en.lproj/InfoPlist.strings +0 -0
  211. data/RufusApp/Frank/frankified_build/RufusApp.app/en.lproj/RUViewController.nib +0 -0
  212. data/RufusApp/Frank/frankify.xcconfig +6 -0
  213. data/RufusApp/Frank/libCocoaAsyncSocket.a +0 -0
  214. data/RufusApp/Frank/libCocoaAsyncSocketMac.a +0 -0
  215. data/RufusApp/Frank/libCocoaHTTPServer.a +0 -0
  216. data/RufusApp/Frank/libCocoaHTTPServerMac.a +0 -0
  217. data/RufusApp/Frank/libCocoaLumberjack.a +0 -0
  218. data/RufusApp/Frank/libCocoaLumberjackMac.a +0 -0
  219. data/RufusApp/Frank/libFrank.a +0 -0
  220. data/RufusApp/Frank/libFrankMac.a +0 -0
  221. data/RufusApp/Frank/libShelley.a +0 -0
  222. data/RufusApp/Frank/libShelleyMac.a +0 -0
  223. data/RufusApp/Rakefile +28 -0
  224. data/RufusApp/RufusApp/Default-568h@2x.png +0 -0
  225. data/RufusApp/RufusApp/Default.png +0 -0
  226. data/RufusApp/RufusApp/Default@2x.png +0 -0
  227. data/RufusApp/RufusApp/Frank/Frankified_build/Applications/RufusApp.app/Default-568h@2x.png +0 -0
  228. data/RufusApp/RufusApp/Frank/Frankified_build/Applications/RufusApp.app/Default.png +0 -0
  229. data/RufusApp/RufusApp/Frank/Frankified_build/Applications/RufusApp.app/Default@2x.png +0 -0
  230. data/RufusApp/RufusApp/Frank/Frankified_build/Applications/RufusApp.app/Info.plist +0 -0
  231. data/RufusApp/RufusApp/Frank/Frankified_build/Applications/RufusApp.app/PkgInfo +1 -0
  232. data/RufusApp/RufusApp/Frank/Frankified_build/Applications/RufusApp.app/ResourceRules.plist +25 -0
  233. data/RufusApp/RufusApp/Frank/Frankified_build/Applications/RufusApp.app/RufusApp +0 -0
  234. data/RufusApp/RufusApp/Frank/Frankified_build/Applications/RufusApp.app/RufusPageViewController.nib +0 -0
  235. data/RufusApp/RufusApp/Frank/Frankified_build/Applications/RufusApp.app/_CodeSignature/CodeResources +60 -0
  236. data/RufusApp/RufusApp/Frank/Frankified_build/Applications/RufusApp.app/embedded.mobileprovision +0 -0
  237. data/RufusApp/RufusApp/Frank/Frankified_build/Applications/RufusApp.app/en.lproj/InfoPlist.strings +0 -0
  238. data/RufusApp/RufusApp/Frank/Frankified_build/Applications/RufusApp.app/en.lproj/RUViewController.nib +0 -0
  239. data/RufusApp/RufusApp/RUAppDelegate.h +19 -0
  240. data/RufusApp/RufusApp/RUAppDelegate.m +53 -0
  241. data/RufusApp/RufusApp/RUViewController.h +16 -0
  242. data/RufusApp/RufusApp/RUViewController.m +34 -0
  243. data/RufusApp/RufusApp/RufusApp-Info.plist +39 -0
  244. data/RufusApp/RufusApp/RufusApp-Prefix.pch +14 -0
  245. data/RufusApp/RufusApp/RufusPageViewController.h +15 -0
  246. data/RufusApp/RufusApp/RufusPageViewController.m +45 -0
  247. data/RufusApp/RufusApp/RufusPageViewController.xib +372 -0
  248. data/RufusApp/RufusApp/en.lproj/InfoPlist.strings +2 -0
  249. data/RufusApp/RufusApp/en.lproj/RUViewController.xib +525 -0
  250. data/RufusApp/RufusApp/main.m +18 -0
  251. data/RufusApp/RufusApp.xcodeproj/project.pbxproj +493 -0
  252. data/RufusApp/RufusApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  253. data/RufusApp/RufusAppTests/RufusAppTests-Info.plist +22 -0
  254. data/RufusApp/RufusAppTests/RufusAppTests.h +13 -0
  255. data/RufusApp/RufusAppTests/RufusAppTests.m +32 -0
  256. data/RufusApp/RufusAppTests/en.lproj/InfoPlist.strings +2 -0
  257. data/features/driver.feature +6 -0
  258. data/features/step_definitions/driver_steps.rb +16 -0
  259. data/features/step_definitions/view_steps.rb +12 -0
  260. data/features/support/core_ext/string.rb +5 -0
  261. data/features/support/env.rb +15 -0
  262. data/features/support/screens/home_page.rb +13 -0
  263. data/features/support/screens/rufus_page.rb +12 -0
  264. data/features/view.feature +10 -0
  265. data/lib/rufus/accessors/accessors.rb +25 -0
  266. data/lib/rufus/accessors/view.rb +47 -0
  267. data/lib/rufus/driver.rb +120 -0
  268. data/lib/rufus/navigation.rb +23 -0
  269. data/lib/rufus.rb +11 -0
  270. data/rufus.gemspec +13 -0
  271. data/spec/accessors_spec.rb +85 -0
  272. data/spec/driver_spec.rb +152 -0
  273. data/spec/spec_helper.rb +16 -0
  274. data/spec/view_spec.rb +102 -0
  275. metadata +352 -0
@@ -0,0 +1,27 @@
1
+ require ['controller','tabs_controller','tree_view','ersatz_view','details_view', 'accessible_views_view','experiment_bar_view','toast_controller'], (createMainController,createTabsController,TreeView,ErsatzView,DetailsView,AccessibleViewsView,ExperimentBarView,createToastController)->
2
+ $ ->
3
+ treeView = new TreeView()
4
+
5
+ ersatzView = new ErsatzView()
6
+ detailsView = new DetailsView()
7
+ accessibleViewsView = new AccessibleViewsView()
8
+ experimentBarView = new ExperimentBarView()
9
+
10
+ tabsController = createTabsController( $("#list-tabs"), $("#inspect-tabs") );
11
+ toastController = createToastController( $('.toast') )
12
+
13
+ mainController = createMainController(
14
+ tabsController: tabsController
15
+ toastController: toastController
16
+ treeView: treeView
17
+ ersatzView: ersatzView
18
+ detailsView: detailsView
19
+ accessibleViewsView: accessibleViewsView
20
+ experimentBarModel: experimentBarView.model
21
+ $asplodeButton: $('#asploder button')
22
+ $reloadButton: $('button#dump_button')
23
+ $liveButton: $('#live-view button')
24
+ )
25
+ mainController.boot()
26
+
27
+
@@ -0,0 +1,29 @@
1
+ (function() {
2
+
3
+ require(['controller', 'tabs_controller', 'tree_view', 'ersatz_view', 'details_view', 'accessible_views_view', 'experiment_bar_view', 'toast_controller'], function(createMainController, createTabsController, TreeView, ErsatzView, DetailsView, AccessibleViewsView, ExperimentBarView, createToastController) {
4
+ return $(function() {
5
+ var accessibleViewsView, detailsView, ersatzView, experimentBarView, mainController, tabsController, toastController, treeView;
6
+ treeView = new TreeView();
7
+ ersatzView = new ErsatzView();
8
+ detailsView = new DetailsView();
9
+ accessibleViewsView = new AccessibleViewsView();
10
+ experimentBarView = new ExperimentBarView();
11
+ tabsController = createTabsController($("#list-tabs"), $("#inspect-tabs"));
12
+ toastController = createToastController($('.toast'));
13
+ mainController = createMainController({
14
+ tabsController: tabsController,
15
+ toastController: toastController,
16
+ treeView: treeView,
17
+ ersatzView: ersatzView,
18
+ detailsView: detailsView,
19
+ accessibleViewsView: accessibleViewsView,
20
+ experimentBarModel: experimentBarView.model,
21
+ $asplodeButton: $('#asploder button'),
22
+ $reloadButton: $('button#dump_button'),
23
+ $liveButton: $('#live-view button')
24
+ });
25
+ return mainController.boot();
26
+ });
27
+ });
28
+
29
+ }).call(this);
@@ -0,0 +1,13 @@
1
+ define ->
2
+
3
+ createController = ($listTabs,$inspectTabs)->
4
+ $listTabs.tabs();
5
+ $inspectTabs.tabs();
6
+
7
+ selectViewDetailsTab = -> $inspectTabs.tabs('select', 0)
8
+ selectLocatorTab = -> $inspectTabs.tabs('select', 1)
9
+ {
10
+ selectViewDetailsTab: selectViewDetailsTab
11
+ selectLocatorTab: selectLocatorTab
12
+ }
13
+
@@ -0,0 +1,22 @@
1
+ (function() {
2
+
3
+ define(function() {
4
+ var createController;
5
+ return createController = function($listTabs, $inspectTabs) {
6
+ var selectLocatorTab, selectViewDetailsTab;
7
+ $listTabs.tabs();
8
+ $inspectTabs.tabs();
9
+ selectViewDetailsTab = function() {
10
+ return $inspectTabs.tabs('select', 0);
11
+ };
12
+ selectLocatorTab = function() {
13
+ return $inspectTabs.tabs('select', 1);
14
+ };
15
+ return {
16
+ selectViewDetailsTab: selectViewDetailsTab,
17
+ selectLocatorTab: selectLocatorTab
18
+ };
19
+ };
20
+ });
21
+
22
+ }).call(this);
@@ -0,0 +1,15 @@
1
+ TOAST_SHOW_TIME = 3000
2
+ define ->
3
+ createController = ($toast)->
4
+ existingTimeout = undefined
5
+
6
+ hideToast = -> $toast.removeClass('show')
7
+
8
+ hideToast()
9
+
10
+ showToastMessage: (message)->
11
+ $toast.addClass('show')
12
+ $toast.html(message)
13
+
14
+ window.clearTimeout(existingTimeout) if existingTimeout?
15
+ existingTimeout = window.setTimeout( hideToast, TOAST_SHOW_TIME )
@@ -0,0 +1,28 @@
1
+ (function() {
2
+ var TOAST_SHOW_TIME;
3
+
4
+ TOAST_SHOW_TIME = 3000;
5
+
6
+ define(function() {
7
+ var createController;
8
+ return createController = function($toast) {
9
+ var existingTimeout, hideToast;
10
+ existingTimeout = void 0;
11
+ hideToast = function() {
12
+ return $toast.removeClass('show');
13
+ };
14
+ hideToast();
15
+ return {
16
+ showToastMessage: function(message) {
17
+ $toast.addClass('show');
18
+ $toast.html(message);
19
+ if (existingTimeout != null) {
20
+ window.clearTimeout(existingTimeout);
21
+ }
22
+ return existingTimeout = window.setTimeout(hideToast, TOAST_SHOW_TIME);
23
+ }
24
+ };
25
+ };
26
+ });
27
+
28
+ }).call(this);
@@ -0,0 +1,59 @@
1
+ R = Raphael
2
+
3
+ define ->
4
+ (initialMatrix)->
5
+ currentMatrix = initialMatrix || R.matrix()
6
+ stack = [currentMatrix]
7
+
8
+ clone = ->
9
+ transformStack( currentMatrix.clone() )
10
+
11
+
12
+ push = ->
13
+ stack.push( currentMatrix )
14
+ currentMatrix = currentMatrix.clone()
15
+ @
16
+
17
+ pop = ->
18
+ stack.pop()
19
+ currentMatrix = _.last( stack )
20
+ @
21
+
22
+ desc = ->
23
+ currentMatrix.toTransformString()
24
+
25
+ descAndPop = ->
26
+ str = desc()
27
+ pop()
28
+ str
29
+
30
+ prefixedWithTranslate = (x,y)->
31
+ prefix = R.matrix()
32
+ prefix.translate(x,y)
33
+ prefix.add( currentMatrix )
34
+ prefix
35
+
36
+
37
+ chainerFor = ( methodName )->
38
+ (args...)->
39
+ currentMatrix[methodName](args...)
40
+ @
41
+
42
+ translate = chainerFor('translate')
43
+ rotate = chainerFor('rotate')
44
+ scale = chainerFor('scale')
45
+
46
+ skew = (x,y)->
47
+ x = R.rad(x)
48
+ y = R.rad(y)
49
+ currentMatrix.add( 1, 0, Math.tan(x), 1, 0, 0 )
50
+ currentMatrix.add( 1, Math.tan(y), 0, 1, 0, 0 )
51
+ @
52
+
53
+ rotateAroundPoint = (rot,x,y)->
54
+ @translate(x,y).rotate(rot).translate(-x,-y)
55
+
56
+ {
57
+ clone, translate, rotate, scale, skew, rotateAroundPoint,
58
+ push, pop, desc, descAndPop, prefixedWithTranslate
59
+ }
@@ -0,0 +1,78 @@
1
+ (function() {
2
+ var R,
3
+ __slice = [].slice;
4
+
5
+ R = Raphael;
6
+
7
+ define(function() {
8
+ return function(initialMatrix) {
9
+ var chainerFor, clone, currentMatrix, desc, descAndPop, pop, prefixedWithTranslate, push, rotate, rotateAroundPoint, scale, skew, stack, translate;
10
+ currentMatrix = initialMatrix || R.matrix();
11
+ stack = [currentMatrix];
12
+ clone = function() {
13
+ return transformStack(currentMatrix.clone());
14
+ };
15
+ push = function() {
16
+ stack.push(currentMatrix);
17
+ currentMatrix = currentMatrix.clone();
18
+ return this;
19
+ };
20
+ pop = function() {
21
+ stack.pop();
22
+ currentMatrix = _.last(stack);
23
+ return this;
24
+ };
25
+ desc = function() {
26
+ return currentMatrix.toTransformString();
27
+ };
28
+ descAndPop = function() {
29
+ var str;
30
+ str = desc();
31
+ pop();
32
+ return str;
33
+ };
34
+ prefixedWithTranslate = function(x, y) {
35
+ var prefix;
36
+ prefix = R.matrix();
37
+ prefix.translate(x, y);
38
+ prefix.add(currentMatrix);
39
+ return prefix;
40
+ };
41
+ chainerFor = function(methodName) {
42
+ return function() {
43
+ var args;
44
+ args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
45
+ currentMatrix[methodName].apply(currentMatrix, args);
46
+ return this;
47
+ };
48
+ };
49
+ translate = chainerFor('translate');
50
+ rotate = chainerFor('rotate');
51
+ scale = chainerFor('scale');
52
+ skew = function(x, y) {
53
+ x = R.rad(x);
54
+ y = R.rad(y);
55
+ currentMatrix.add(1, 0, Math.tan(x), 1, 0, 0);
56
+ currentMatrix.add(1, Math.tan(y), 0, 1, 0, 0);
57
+ return this;
58
+ };
59
+ rotateAroundPoint = function(rot, x, y) {
60
+ return this.translate(x, y).rotate(rot).translate(-x, -y);
61
+ };
62
+ return {
63
+ clone: clone,
64
+ translate: translate,
65
+ rotate: rotate,
66
+ scale: scale,
67
+ skew: skew,
68
+ rotateAroundPoint: rotateAroundPoint,
69
+ push: push,
70
+ pop: pop,
71
+ desc: desc,
72
+ descAndPop: descAndPop,
73
+ prefixedWithTranslate: prefixedWithTranslate
74
+ };
75
+ };
76
+ });
77
+
78
+ }).call(this);
@@ -0,0 +1,53 @@
1
+ define ['view_hier_model'],(ViewHierModel)->
2
+
3
+ TreeNodeView = Backbone.View.extend
4
+ tagName: 'li'
5
+
6
+ initialize: ->
7
+ @model.on 'change:selected', _.bind( @refreshSelectedness, @ )
8
+
9
+ $a: -> @$( '> a' )
10
+
11
+ render: ->
12
+ $childList = $("<ul/>")
13
+
14
+ for child in @model.get('children')
15
+ childView = new TreeNodeView( model: child )
16
+ $childList.append( childView.render().el )
17
+
18
+ @$el.append("<a>#{@model.getDesc()}</a>").append($childList)
19
+
20
+ # have to do this by hand rather than with events property
21
+ # because BB doesn't appear to let you bind to just immediate
22
+ # descendants using e.g. "mouseenter > a"
23
+ @$a()
24
+ .on( 'mouseenter', => @model.setActive() )
25
+ .on( 'mouseleave', => @model.unsetActive() )
26
+ .on( 'click', => @model.trigger('selected',@model) )
27
+
28
+ @refreshSelectedness()
29
+ @
30
+
31
+ refreshSelectedness: ->
32
+ if @model.get('selected')
33
+ @$a().addClass('selected')
34
+ else
35
+ @$a().removeClass('selected')
36
+
37
+
38
+
39
+
40
+
41
+ TreeView = Backbone.View.extend
42
+ el: $('#dom-dump > ul')
43
+
44
+ initialize: ->
45
+ @model = new ViewHierModel()
46
+ @model.on 'change', _.bind(@refresh,@)
47
+
48
+ refresh: ->
49
+ @$el.empty()
50
+ rootNodeView = new TreeNodeView(model: @model.get('root'))
51
+ @$el.append( rootNodeView.render().el )
52
+ @$el.treeview( collapsed: false )
53
+
@@ -0,0 +1,64 @@
1
+ (function() {
2
+
3
+ define(['view_hier_model'], function(ViewHierModel) {
4
+ var TreeNodeView, TreeView;
5
+ TreeNodeView = Backbone.View.extend({
6
+ tagName: 'li',
7
+ initialize: function() {
8
+ return this.model.on('change:selected', _.bind(this.refreshSelectedness, this));
9
+ },
10
+ $a: function() {
11
+ return this.$('> a');
12
+ },
13
+ render: function() {
14
+ var $childList, child, childView, _i, _len, _ref,
15
+ _this = this;
16
+ $childList = $("<ul/>");
17
+ _ref = this.model.get('children');
18
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
19
+ child = _ref[_i];
20
+ childView = new TreeNodeView({
21
+ model: child
22
+ });
23
+ $childList.append(childView.render().el);
24
+ }
25
+ this.$el.append("<a>" + (this.model.getDesc()) + "</a>").append($childList);
26
+ this.$a().on('mouseenter', function() {
27
+ return _this.model.setActive();
28
+ }).on('mouseleave', function() {
29
+ return _this.model.unsetActive();
30
+ }).on('click', function() {
31
+ return _this.model.trigger('selected', _this.model);
32
+ });
33
+ this.refreshSelectedness();
34
+ return this;
35
+ },
36
+ refreshSelectedness: function() {
37
+ if (this.model.get('selected')) {
38
+ return this.$a().addClass('selected');
39
+ } else {
40
+ return this.$a().removeClass('selected');
41
+ }
42
+ }
43
+ });
44
+ return TreeView = Backbone.View.extend({
45
+ el: $('#dom-dump > ul'),
46
+ initialize: function() {
47
+ this.model = new ViewHierModel();
48
+ return this.model.on('change', _.bind(this.refresh, this));
49
+ },
50
+ refresh: function() {
51
+ var rootNodeView;
52
+ this.$el.empty();
53
+ rootNodeView = new TreeNodeView({
54
+ model: this.model.get('root')
55
+ });
56
+ this.$el.append(rootNodeView.render().el);
57
+ return this.$el.treeview({
58
+ collapsed: false
59
+ });
60
+ }
61
+ });
62
+ });
63
+
64
+ }).call(this);
@@ -0,0 +1,37 @@
1
+ define ['view_model'], (ViewModel)->
2
+ ViewCollection = Backbone.Collection
3
+
4
+ flatten = (rootViewModel)->
5
+ flattenedViewModels = [rootViewModel]
6
+ for childViewModel in rootViewModel.get('children')
7
+ flattenedViewModels = flattenedViewModels.concat( flatten(childViewModel) )
8
+
9
+ flattenedViewModels
10
+
11
+
12
+
13
+ ViewHierModel = Backbone.Model.extend
14
+ getAccessibleViews: ->
15
+ @get( 'allViews' ).filter (viewModel)-> viewModel.has('accessibilityLabel')
16
+
17
+ resetViewHier: (rawRootView)->
18
+ rootViewModel = new ViewModel(rawRootView)
19
+ allViews = new ViewCollection( flatten( rootViewModel ) )
20
+
21
+ allViews.on 'change:active', (viewModel)=>
22
+ if viewModel.get('active')
23
+ @trigger( 'active-view-changed', viewModel )
24
+
25
+ allViews.on 'selected', (selectedViewModel)=>
26
+ allViews.each (viewModel)->
27
+ viewModel.set('selected',viewModel == selectedViewModel)
28
+ @trigger( 'selected-view-changed', selectedViewModel )
29
+
30
+ allViews.on 'accessible-selected', (viewModel)=>
31
+ @trigger( 'accessible-view-selected', viewModel )
32
+
33
+ @set( 'root', rootViewModel )
34
+ @set( 'allViews', allViews )
35
+
36
+
37
+ ViewHierModel
@@ -0,0 +1,48 @@
1
+ (function() {
2
+
3
+ define(['view_model'], function(ViewModel) {
4
+ var ViewCollection, ViewHierModel, flatten;
5
+ ViewCollection = Backbone.Collection;
6
+ flatten = function(rootViewModel) {
7
+ var childViewModel, flattenedViewModels, _i, _len, _ref;
8
+ flattenedViewModels = [rootViewModel];
9
+ _ref = rootViewModel.get('children');
10
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
11
+ childViewModel = _ref[_i];
12
+ flattenedViewModels = flattenedViewModels.concat(flatten(childViewModel));
13
+ }
14
+ return flattenedViewModels;
15
+ };
16
+ ViewHierModel = Backbone.Model.extend({
17
+ getAccessibleViews: function() {
18
+ return this.get('allViews').filter(function(viewModel) {
19
+ return viewModel.has('accessibilityLabel');
20
+ });
21
+ },
22
+ resetViewHier: function(rawRootView) {
23
+ var allViews, rootViewModel,
24
+ _this = this;
25
+ rootViewModel = new ViewModel(rawRootView);
26
+ allViews = new ViewCollection(flatten(rootViewModel));
27
+ allViews.on('change:active', function(viewModel) {
28
+ if (viewModel.get('active')) {
29
+ return _this.trigger('active-view-changed', viewModel);
30
+ }
31
+ });
32
+ allViews.on('selected', function(selectedViewModel) {
33
+ allViews.each(function(viewModel) {
34
+ return viewModel.set('selected', viewModel === selectedViewModel);
35
+ });
36
+ return _this.trigger('selected-view-changed', selectedViewModel);
37
+ });
38
+ allViews.on('accessible-selected', function(viewModel) {
39
+ return _this.trigger('accessible-view-selected', viewModel);
40
+ });
41
+ this.set('root', rootViewModel);
42
+ return this.set('allViews', allViews);
43
+ }
44
+ });
45
+ return ViewHierModel;
46
+ });
47
+
48
+ }).call(this);
@@ -0,0 +1,39 @@
1
+ define ["frank"], (frank)->
2
+
3
+ ViewModel = Backbone.Model.extend
4
+ defaults:
5
+ parent: undefined
6
+ depth: 0
7
+
8
+ initialize: (attributes)->
9
+ childDepth = attributes.depth + 1
10
+ childModels = for subview in attributes.subviews
11
+ new ViewModel( _.extend( subview, {parent:@,depth:childDepth} ) )
12
+
13
+ @set( children: childModels )
14
+
15
+ getDesc: ->
16
+ viewClass = @get('class')
17
+ if label = @get('accessibilityLabel')
18
+ "#{viewClass}: #{label}"
19
+ else
20
+ viewClass
21
+
22
+ getShelleySelector: ->
23
+ if @has('accessibilityLabel')
24
+ "view:'#{@get('class')}' marked:'#{@get('accessibilityLabel')}'"
25
+ else
26
+ false
27
+
28
+ getSnapshotUrl: ->
29
+ frank.snapshotUrlForViewWithUid(@get('uid'))
30
+
31
+ setActive: ->
32
+ @collection.each (viewModel)=>
33
+ viewModel.set( 'active', viewModel == @ )
34
+
35
+ unsetActive: ->
36
+ @set( 'active', false )
37
+
38
+
39
+ ViewModel
@@ -0,0 +1,62 @@
1
+ (function() {
2
+
3
+ define(["frank"], function(frank) {
4
+ var ViewModel;
5
+ ViewModel = Backbone.Model.extend({
6
+ defaults: {
7
+ parent: void 0,
8
+ depth: 0
9
+ },
10
+ initialize: function(attributes) {
11
+ var childDepth, childModels, subview;
12
+ childDepth = attributes.depth + 1;
13
+ childModels = (function() {
14
+ var _i, _len, _ref, _results;
15
+ _ref = attributes.subviews;
16
+ _results = [];
17
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
18
+ subview = _ref[_i];
19
+ _results.push(new ViewModel(_.extend(subview, {
20
+ parent: this,
21
+ depth: childDepth
22
+ })));
23
+ }
24
+ return _results;
25
+ }).call(this);
26
+ return this.set({
27
+ children: childModels
28
+ });
29
+ },
30
+ getDesc: function() {
31
+ var label, viewClass;
32
+ viewClass = this.get('class');
33
+ if (label = this.get('accessibilityLabel')) {
34
+ return "" + viewClass + ": " + label;
35
+ } else {
36
+ return viewClass;
37
+ }
38
+ },
39
+ getShelleySelector: function() {
40
+ if (this.has('accessibilityLabel')) {
41
+ return "view:'" + (this.get('class')) + "' marked:'" + (this.get('accessibilityLabel')) + "'";
42
+ } else {
43
+ return false;
44
+ }
45
+ },
46
+ getSnapshotUrl: function() {
47
+ return frank.snapshotUrlForViewWithUid(this.get('uid'));
48
+ },
49
+ setActive: function() {
50
+ var _this = this;
51
+ return this.collection.each(function(viewModel) {
52
+ return viewModel.set('active', viewModel === _this);
53
+ });
54
+ },
55
+ unsetActive: function() {
56
+ return this.set('active', false);
57
+ }
58
+ });
59
+ return ViewModel;
60
+ });
61
+
62
+ }).call(this);