SettingsController.coffee 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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. $scope.fontSizeAsStr = (newVal) ->
  10. if newVal?
  11. $scope.settings.fontSize = newVal
  12. return $scope.settings.fontSize.toString()
  13. $scope.$watch "settings.theme", (theme, oldTheme) =>
  14. if theme != oldTheme
  15. settings.saveSettings({theme: theme})
  16. $scope.$watch "settings.fontSize", (fontSize, oldFontSize) =>
  17. if fontSize != oldFontSize
  18. settings.saveSettings({fontSize: parseInt(fontSize, 10)})
  19. $scope.$watch "settings.mode", (mode, oldMode) =>
  20. if mode != oldMode
  21. settings.saveSettings({mode: mode})
  22. $scope.$watch "settings.autoComplete", (autoComplete, oldAutoComplete) =>
  23. if autoComplete != oldAutoComplete
  24. settings.saveSettings({autoComplete: autoComplete})
  25. $scope.$watch "settings.autoPairDelimiters", (autoPairDelimiters, oldAutoPairDelimiters) =>
  26. if autoPairDelimiters != oldAutoPairDelimiters
  27. settings.saveSettings({autoPairDelimiters: autoPairDelimiters})
  28. $scope.$watch "settings.pdfViewer", (pdfViewer, oldPdfViewer) =>
  29. if pdfViewer != oldPdfViewer
  30. settings.saveSettings({pdfViewer: pdfViewer})
  31. $scope.$watch "settings.syntaxValidation", (syntaxValidation, oldSyntaxValidation) =>
  32. if syntaxValidation != oldSyntaxValidation
  33. settings.saveSettings({syntaxValidation: syntaxValidation})
  34. $scope.$watch "project.spellCheckLanguage", (language, oldLanguage) =>
  35. return if @ignoreUpdates
  36. if oldLanguage? and language != oldLanguage
  37. settings.saveProjectSettings({spellCheckLanguage: language})
  38. # Also set it as the default for the user
  39. settings.saveSettings({spellCheckLanguage: language})
  40. $scope.$watch "project.compiler", (compiler, oldCompiler) =>
  41. return if @ignoreUpdates
  42. if oldCompiler? and compiler != oldCompiler
  43. settings.saveProjectSettings({compiler: compiler})
  44. $scope.$watch "project.rootDoc_id", (rootDoc_id, oldRootDoc_id) =>
  45. return if @ignoreUpdates
  46. # don't save on initialisation, Angular passes oldRootDoc_id as
  47. # undefined in this case.
  48. return if typeof oldRootDoc_id is "undefined"
  49. # otherwise only save changes, null values are allowed
  50. if (rootDoc_id != oldRootDoc_id)
  51. settings.saveProjectSettings({rootDocId: rootDoc_id})
  52. ide.socket.on "compilerUpdated", (compiler) =>
  53. @ignoreUpdates = true
  54. $scope.$apply () =>
  55. $scope.project.compiler = compiler
  56. delete @ignoreUpdates
  57. ide.socket.on "spellCheckLanguageUpdated", (languageCode) =>
  58. @ignoreUpdates = true
  59. $scope.$apply () =>
  60. $scope.project.spellCheckLanguage = languageCode
  61. delete @ignoreUpdates
  62. ]