class Etti::PageDatas
Constants
- FIELDS
Attributes
pageDatas[R]
pageDimensions[R]
Public Class Methods
new()
click to toggle source
Calls superclass method
# File lib/etti/page-datas.rb, line 15 def initialize super() @pageDimensions = {'a4' => [297.0, 210.0]} @pageDatas = {} @dataFiles = [DATA_PATH + 'page-data.json', File.expand_path('~') + '/.local/share/etti/page-data.json'] @dataFiles.each_with_index do |filename, idx| next unless File.exist? filename data = File.new(filename).read json = JSON.parse data unless json['Etti'] == 'page data file' warn "the data file \"%s\" is not a valid etti page data file" % filename next end @pageDatas.merge! json['Data'] @pageDatas.each_pair do |key, val| @pageDatas[key][:source] = idx if val[:source].nil? end end end
Public Instance Methods
get_page_data(type)
click to toggle source
# File lib/etti/page-datas.rb, line 47 def get_page_data type data = @pageDatas[type] return nil if data.nil? hs = {} hs[:name] = type FIELDS.each do |sym| val = data[sym.to_s] next if val.nil? val = val.clone if val.is_a? Array or val.is_a? String hs[sym] = val end hs end
get_page_dimensions(size)
click to toggle source
# File lib/etti/page-datas.rb, line 83 def get_page_dimensions size @pageDimensions[size] end
get_page_names()
click to toggle source
# File lib/etti/page-datas.rb, line 42 def get_page_names @pageDatas.keys.sort end
save_page_data(page, savePage, &callback)
click to toggle source
# File lib/etti/page-datas.rb, line 88 def save_page_data page, savePage, &callback FileUtils.mkdir_p File.dirname(@dataFiles.last) if savePage and @pageDatas.key? page[:name] message = _("The page description\n\"%s\"\nalready exist.\n\nSould it be replaced?") % page[:name] ret = callback.call :warning, :yes_no, message return nil unless ret == 'yes' end # header json = {'Etti' => 'page data file', 'Version' => [1, 0], 'Data' => {}} # save unchanged pages to the hash @pageDatas.each_pair do |key, val| json['Data'][key] = val if val[:source] == 1 end pageHash = nil newPage = !@pageDatas.key?(page[:name]) # fill the current or new page with the page data from the UI if newPage pageHash = {} else pageHash = @pageDatas[page[:name]] end FIELDS.each do |key| pageHash[key.to_s] = page[key] end json['Data'][page[:name]] = pageHash if savePage and newPage pageHash['source'] = 1 @pageDatas[page[:name]] = pageHash signal_emit :new_page, [page[:name], pageHash] end unless savePage pageHash['name'] = page[:name] end return pageHash unless savePage fd = File.new @dataFiles.last, File::CREAT|File::TRUNC|File::RDWR, 0644 fileData = $etti_developement_version ? JSON.pretty_generate(json) : JSON.fast_generate(json) fd.write fileData fd.flush # we need pageHash also in saving the complete document pageHash end
set_page_data(type, data)
click to toggle source
# File lib/etti/page-datas.rb, line 63 def set_page_data type, data newPage = !@pageDatas.key?(type) if newPage pageHash = {} else pageHash = @pageDatas[type] end FIELDS.each do |key| d = data[key] if d.is_a? Array or d.is_a? String pageHash[key.to_sym] = d.clone else pageHash[key.to_sym] = data[key] end end pageHash[:name] = type signal_emit(:new_page, [type, pageHash]) if newPage end
signal_do_new_page(foo;)
click to toggle source
# File lib/etti/page-datas.rb, line 7 def signal_do_new_page foo; end
Private Instance Methods
warn(warning)
click to toggle source
# File lib/etti/page-datas.rb, line 142 def warn warning printf "%s:%i: %s\n", __FILE__, __LINE__, warning end