Sha256: 65d4d710cd4ffb3ddd1212e542ea0c8b677e0ba5834d4c7e4488fe725907e782

Contents?: true

Size: 1.53 KB

Versions: 1

Compression:

Stored size: 1.53 KB

Contents

require "edit_view/command"
require "edit_view/document"
require "edit_view/document/controller"
require "edit_view/document/mirror"
require "edit_view/edit_tab"

module Redcar
  class EditView
    include Redcar::Model
    include Redcar::Observable
    
    def self.start
      Sensitivity.new(:edit_tab_focussed, Redcar.app, false, [:tab_focussed]) do |tab|
        tab and tab.is_a?(EditTab)
      end
    end
    
    attr_reader :document
    
    def initialize(tab)
      @tab = tab
      create_document
      @grammar = nil
      @focussed = nil
    end
    
    def create_document
      @document = Redcar::Document.new(self)
    end
    
    def title=(title)
      @tab.title = title
    end
    
    def cursor_offset=(offset)
      controller.cursor_offset = offset
    end
    
    def cursor_offset
      controller.cursor_offset
    end
    
    def scroll_to_line(line_index)
      controller.scroll_to_line(line_index)
    end
    
    def grammar
      @grammar
    end
    
    def grammar=(name)
      @grammar = name
      notify_listeners(:grammar_changed, name)
    end
    
    def set_grammar(name)
      @grammar = name
    end
    
    def gained_focus
      notify_listeners(:focussed)
    end
    
    def serialize
      { :contents      => document.to_s,
        :cursor_offset => cursor_offset,
        :grammar       => grammar         }
    end
    
    def deserialize(data)
      self.grammar       = data[:grammar]
      document.text      = data[:contents]
      self.cursor_offset = data[:cursor_offset]
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
redcar-0.3.0dev plugins/edit_view/lib/edit_view.rb