ide.coffee 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. define [
  2. "base"
  3. "ide/file-tree/FileTreeManager"
  4. "ide/connection/ConnectionManager"
  5. "ide/editor/EditorManager"
  6. "ide/online-users/OnlineUsersManager"
  7. "ide/track-changes/TrackChangesManager"
  8. "ide/permissions/PermissionsManager"
  9. "ide/pdfng/PdfManager"
  10. "ide/binary-files/BinaryFilesManager"
  11. "ide/settings/index"
  12. "ide/share/index"
  13. "ide/chat/index"
  14. "ide/clone/index"
  15. "ide/templates/index"
  16. "ide/dropbox/index"
  17. "ide/hotkeys/index"
  18. "ide/directives/layout"
  19. "ide/services/ide"
  20. "__IDE_CLIENTSIDE_INCLUDES__"
  21. "analytics/AbTestingManager"
  22. "directives/focus"
  23. "directives/fineUpload"
  24. "directives/scroll"
  25. "directives/onEnter"
  26. "directives/stopPropagation"
  27. "directives/rightClick"
  28. "filters/formatDate"
  29. "main/event-tracking"
  30. "main/account-upgrade"
  31. ], (
  32. App
  33. FileTreeManager
  34. ConnectionManager
  35. EditorManager
  36. OnlineUsersManager
  37. TrackChangesManager
  38. PermissionsManager
  39. PdfManager
  40. BinaryFilesManager
  41. ) ->
  42. App.controller "IdeController", ($scope, $timeout, ide) ->
  43. # Don't freak out if we're already in an apply callback
  44. $scope.$originalApply = $scope.$apply
  45. $scope.$apply = (fn = () ->) ->
  46. phase = @$root.$$phase
  47. if (phase == '$apply' || phase == '$digest')
  48. fn()
  49. else
  50. this.$originalApply(fn);
  51. $scope.state = {
  52. loading: true
  53. load_progress: 40
  54. }
  55. $scope.ui = {
  56. leftMenuShown: false
  57. view: "editor"
  58. chatOpen: false
  59. pdfLayout: 'sideBySide'
  60. }
  61. $scope.user = window.user
  62. $scope.settings = window.userSettings
  63. $scope.anonymous = window.anonymous
  64. $scope.chat = {}
  65. window._ide = ide
  66. ide.project_id = $scope.project_id = window.project_id
  67. ide.$scope = $scope
  68. ide.connectionManager = new ConnectionManager(ide, $scope)
  69. ide.fileTreeManager = new FileTreeManager(ide, $scope)
  70. ide.editorManager = new EditorManager(ide, $scope)
  71. ide.onlineUsersManager = new OnlineUsersManager(ide, $scope)
  72. ide.trackChangesManager = new TrackChangesManager(ide, $scope)
  73. ide.pdfManager = new PdfManager(ide, $scope)
  74. ide.permissionsManager = new PermissionsManager(ide, $scope)
  75. ide.binaryFilesManager = new BinaryFilesManager(ide, $scope)
  76. inited = false
  77. $scope.$on "project:joined", () ->
  78. return if inited
  79. inited = true
  80. if $scope.project.deletedByExternalDataSource
  81. ide.showGenericMessageModal("Project Renamed or Deleted", """
  82. This project has either been renamed or deleted by an external data source such as Dropbox.
  83. We don't want to delete your data on ShareLaTeX, so this project still contains your history and collaborators.
  84. If the project has been renamed please look in your project list for a new project under the new name.
  85. """)
  86. DARK_THEMES = [
  87. "ambiance", "chaos", "clouds_midnight", "cobalt", "idle_fingers",
  88. "merbivore", "merbivore_soft", "mono_industrial", "monokai",
  89. "pastel_on_dark", "solarized_dark", "terminal", "tomorrow_night",
  90. "tomorrow_night_blue", "tomorrow_night_bright", "tomorrow_night_eighties",
  91. "twilight", "vibrant_ink"
  92. ]
  93. $scope.darkTheme = false
  94. $scope.$watch "settings.theme", (theme) ->
  95. if theme in DARK_THEMES
  96. $scope.darkTheme = true
  97. else
  98. $scope.darkTheme = false
  99. angular.bootstrap(document.body, ["SharelatexApp"])