SettingsController.coffee 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. define [
  2. "base"
  3. ], (App) ->
  4. App.controller "SettingsController", ["$scope", "settings", "ide", ($scope, settings, ide) ->
  5. if $scope.settings.mode not in ["default", "vim", "emacs"]
  6. $scope.settings.mode = "default"
  7. if $scope.settings.pdfViewer not in ["pdfjs", "native"]
  8. $scope.settings.pdfViewer = "pdfjs"
  9. if $scope.settings.fontFamily? and $scope.settings.fontFamily not in ["monaco", "lucida"]
  10. delete $scope.settings.fontFamily
  11. if $scope.settings.lineHeight? and $scope.settings.lineHeight not in ["compact", "normal", "wide"]
  12. delete $scope.settings.lineHeight
  13. $scope.fontSizeAsStr = (newVal) ->
  14. if newVal?
  15. $scope.settings.fontSize = newVal
  16. return $scope.settings.fontSize.toString()
  17. $scope.$watch "settings.editorTheme", (editorTheme, oldEditorTheme) =>
  18. if editorTheme != oldEditorTheme
  19. settings.saveSettings({editorTheme})
  20. $scope.$watch "settings.overallTheme", (overallTheme, oldOverallTheme) =>
  21. if overallTheme != oldOverallTheme
  22. settings.saveSettings({overallTheme})
  23. $scope.$watch "settings.fontSize", (fontSize, oldFontSize) =>
  24. if fontSize != oldFontSize
  25. settings.saveSettings({fontSize: parseInt(fontSize, 10)})
  26. $scope.$watch "settings.mode", (mode, oldMode) =>
  27. if mode != oldMode
  28. settings.saveSettings({mode: mode})
  29. $scope.$watch "settings.autoComplete", (autoComplete, oldAutoComplete) =>
  30. if autoComplete != oldAutoComplete
  31. settings.saveSettings({autoComplete: autoComplete})
  32. $scope.$watch "settings.autoPairDelimiters", (autoPairDelimiters, oldAutoPairDelimiters) =>
  33. if autoPairDelimiters != oldAutoPairDelimiters
  34. settings.saveSettings({autoPairDelimiters: autoPairDelimiters})
  35. $scope.$watch "settings.pdfViewer", (pdfViewer, oldPdfViewer) =>
  36. if pdfViewer != oldPdfViewer
  37. settings.saveSettings({pdfViewer: pdfViewer})
  38. $scope.$watch "settings.syntaxValidation", (syntaxValidation, oldSyntaxValidation) =>
  39. if syntaxValidation != oldSyntaxValidation
  40. settings.saveSettings({syntaxValidation: syntaxValidation})
  41. $scope.$watch "settings.fontFamily", (fontFamily, oldFontFamily) =>
  42. if fontFamily != oldFontFamily
  43. settings.saveSettings({fontFamily: fontFamily})
  44. $scope.$watch "settings.lineHeight", (lineHeight, oldLineHeight) =>
  45. if lineHeight != oldLineHeight
  46. settings.saveSettings({lineHeight: lineHeight})
  47. $scope.$watch "project.spellCheckLanguage", (language, oldLanguage) =>
  48. return if @ignoreUpdates
  49. if oldLanguage? and language != oldLanguage
  50. settings.saveProjectSettings({spellCheckLanguage: language})
  51. # Also set it as the default for the user
  52. settings.saveSettings({spellCheckLanguage: language})
  53. $scope.$watch "project.compiler", (compiler, oldCompiler) =>
  54. return if @ignoreUpdates
  55. if oldCompiler? and compiler != oldCompiler
  56. settings.saveProjectSettings({compiler: compiler})
  57. $scope.$watch "project.imageName", (imageName, oldImageName) =>
  58. return if @ignoreUpdates
  59. if oldImageName? and imageName != oldImageName
  60. settings.saveProjectSettings({imageName: imageName})
  61. $scope.$watch "project.rootDoc_id", (rootDoc_id, oldRootDoc_id) =>
  62. return if @ignoreUpdates
  63. # don't save on initialisation, Angular passes oldRootDoc_id as
  64. # undefined in this case.
  65. return if typeof oldRootDoc_id is "undefined"
  66. # otherwise only save changes, null values are allowed
  67. if (rootDoc_id != oldRootDoc_id)
  68. settings.saveProjectSettings({rootDocId: rootDoc_id})
  69. ide.socket.on "compilerUpdated", (compiler) =>
  70. @ignoreUpdates = true
  71. $scope.$apply () =>
  72. $scope.project.compiler = compiler
  73. delete @ignoreUpdates
  74. ide.socket.on "imageNameUpdated", (imageName) =>
  75. @ignoreUpdates = true
  76. $scope.$apply () =>
  77. $scope.project.imageName = imageName
  78. delete @ignoreUpdates
  79. ide.socket.on "spellCheckLanguageUpdated", (languageCode) =>
  80. @ignoreUpdates = true
  81. $scope.$apply () =>
  82. $scope.project.spellCheckLanguage = languageCode
  83. delete @ignoreUpdates
  84. ]