From fca1c13d03368f6cd368c583e57bf5eaa1f47d88 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Fri, 7 Jun 2013 10:15:32 -0700 Subject: [PATCH] Move image-view to a package This removes the ugliness of having project.coffee require image-edit-session at the end since the image-edit-session can now register itself in an @activate callback and as a deferred deserializer in the package.cson file. --- src/app/keymaps/editor.cson | 7 ----- src/app/project.coffee | 2 -- .../image-view/keymaps/image-view.cson | 6 +++++ .../image-view/lib}/image-edit-session.coffee | 26 +++++++++---------- .../image-view/lib}/image-view.coffee | 2 -- src/packages/image-view/package.cson | 3 +++ .../image-view/spec}/image-view-spec.coffee | 6 ++--- .../image-view/stylesheets}/image-view.less | 0 8 files changed, 24 insertions(+), 28 deletions(-) create mode 100644 src/packages/image-view/keymaps/image-view.cson rename src/{app => packages/image-view/lib}/image-edit-session.coffee (67%) rename src/{app => packages/image-view/lib}/image-view.coffee (98%) create mode 100644 src/packages/image-view/package.cson rename {spec/app => src/packages/image-view/spec}/image-view-spec.coffee (94%) rename {static => src/packages/image-view/stylesheets}/image-view.less (100%) diff --git a/src/app/keymaps/editor.cson b/src/app/keymaps/editor.cson index 676c45cde..de469f8ae 100644 --- a/src/app/keymaps/editor.cson +++ b/src/app/keymaps/editor.cson @@ -36,10 +36,3 @@ '.editor !important, .editor.mini !important': 'escape': 'editor:consolidate-selections' - -'.image-view': - 'meta-+': 'image-view:zoom-in' - 'meta-=': 'image-view:zoom-in' - 'meta--': 'image-view:zoom-out' - 'meta-_': 'image-view:zoom-out' - 'meta-0': 'image-view:reset-zoom' diff --git a/src/app/project.coffee b/src/app/project.coffee index 7e60cfd64..2907ce7ac 100644 --- a/src/app/project.coffee +++ b/src/app/project.coffee @@ -317,5 +317,3 @@ class Project @on 'buffer-created', (buffer) -> callback(buffer) _.extend Project.prototype, EventEmitter - -require 'image-edit-session' diff --git a/src/packages/image-view/keymaps/image-view.cson b/src/packages/image-view/keymaps/image-view.cson new file mode 100644 index 000000000..5bde9a131 --- /dev/null +++ b/src/packages/image-view/keymaps/image-view.cson @@ -0,0 +1,6 @@ +'.image-view': + 'meta-+': 'image-view:zoom-in' + 'meta-=': 'image-view:zoom-in' + 'meta--': 'image-view:zoom-out' + 'meta-_': 'image-view:zoom-out' + 'meta-0': 'image-view:reset-zoom' diff --git a/src/app/image-edit-session.coffee b/src/packages/image-view/lib/image-edit-session.coffee similarity index 67% rename from src/app/image-edit-session.coffee rename to src/packages/image-view/lib/image-edit-session.coffee index dd470fd85..b5e19f409 100644 --- a/src/app/image-edit-session.coffee +++ b/src/packages/image-view/lib/image-edit-session.coffee @@ -8,21 +8,19 @@ module.exports= class ImageEditSession registerDeserializer(this) - # Files with these extensions will be opened as images - @imageExtensions: ['.gif', '.jpeg', '.jpg', '.png'] + @activate: -> + # Files with these extensions will be opened as images + imageExtensions = ['.gif', '.jpeg', '.jpg', '.png'] + Project = require 'project' + Project.registerOpener (filePath) -> + if _.include(imageExtensions, fsUtils.extension(filePath)) + new ImageEditSession(filePath) - ### Internal ### - - Project = require 'project' - Project.registerOpener (path) => - new ImageEditSession(path) if _.include(@imageExtensions, fsUtils.extension(path)) - - - @deserialize: (state) -> - if fsUtils.exists(state.path) - project.open(state.path) + @deserialize: ({path}={}) -> + if fsUtils.exists(path) + new ImageEditSession(path) else - console.warn "Could not build edit session for path '#{state.path}' because that file no longer exists" + console.warn "Could not build image edit session for path '#{path}' because that file no longer exists" constructor: (@path) -> @@ -31,7 +29,7 @@ class ImageEditSession path: @path getViewClass: -> - require 'image-view' + require './image-view' ### Public ### diff --git a/src/app/image-view.coffee b/src/packages/image-view/lib/image-view.coffee similarity index 98% rename from src/app/image-view.coffee rename to src/packages/image-view/lib/image-view.coffee index fd2a369da..4655a8675 100644 --- a/src/app/image-view.coffee +++ b/src/packages/image-view/lib/image-view.coffee @@ -16,8 +16,6 @@ class ImageView extends ScrollView initialize: (imageEditSession) -> super - requireStylesheet 'image-view' - @image.load => @originalHeight = @image.height() @originalWidth = @image.width() diff --git a/src/packages/image-view/package.cson b/src/packages/image-view/package.cson new file mode 100644 index 000000000..066a619bd --- /dev/null +++ b/src/packages/image-view/package.cson @@ -0,0 +1,3 @@ +'description': 'View images in the editor' +'main': './lib/image-edit-session' +'deferredDeserializers': ['ImageEditSession'] diff --git a/spec/app/image-view-spec.coffee b/src/packages/image-view/spec/image-view-spec.coffee similarity index 94% rename from spec/app/image-view-spec.coffee rename to src/packages/image-view/spec/image-view-spec.coffee index d4dda8920..67530a916 100644 --- a/spec/app/image-view-spec.coffee +++ b/src/packages/image-view/spec/image-view-spec.coffee @@ -1,7 +1,7 @@ -ImageView = require 'image-view' -ImageEditSession = require 'image-edit-session' +ImageView = require '../lib/image-view' +ImageEditSession = require '../lib/image-edit-session' -describe "ImageView", -> +fdescribe "ImageView", -> [view, path] = [] beforeEach -> diff --git a/static/image-view.less b/src/packages/image-view/stylesheets/image-view.less similarity index 100% rename from static/image-view.less rename to src/packages/image-view/stylesheets/image-view.less