class Etti::LabelSelectionPage

Attributes

labelList[R]
pageData[R]
pageDatas[R]

Public Class Methods

new() click to toggle source
Calls superclass method
# File lib/etti/ui/label-selection-page.rb, line 12
def initialize
    super(:orientation => :horizontal)
    @pageDatas = Etti::PageDatas.new
    @previewArea = Etti::PageLayout.new @pageDatas

    create_label_list
    @pageDatas.signal_connect(:new_page) {|ettipd, ary| label_list_add ary[0], ary[1]}

    scroll = Gtk::ScrolledWindow.new
    scroll.set_policy :automatic, :automatic
    scroll.add @labelList
    pack1 scroll

    pack2 @previewArea

    self.position = 300
end

Public Instance Methods

create_label_list() click to toggle source
# File lib/etti/ui/label-selection-page.rb, line 84
def create_label_list
    @labelListStore = Gtk::ListStore.new String
    @labelList = Gtk::TreeView.new @labelListStore
    @labelList.signal_connect(:cursor_changed) {on_label_list_cursor_changed}
    renderer = Gtk::CellRendererText.new
    @labelList.insert_column -1, _('Label'), renderer, :text => 0

    names = @pageDatas.get_page_names
    names.each_with_index do |name, i|
        iter = @labelListStore.append
        iter.set_value 0, name
        if i == 0
            @pageData = @pageDatas.get_page_data name
            @previewArea.update_page_data @pageData
        end
    end
    @labelList.selection.select_path Gtk::TreePath.new('0')
    @pageData = @pageDatas.get_page_data names[0]
end
get_user_settings() click to toggle source
# File lib/etti/ui/label-selection-page.rb, line 33
def get_user_settings
    @pageDatas.save_page_data(@pageData, false){}
end
label_list_add(name, data) click to toggle source
# File lib/etti/ui/label-selection-page.rb, line 128
def label_list_add name, data
    idx = 0
    pt = nil
    @labelListStore.each do |model, path, iter|
        pt = path
        break if iter[0] > name
        idx += 1
    end
    iter = @labelListStore.insert idx
    iter[0] = name
    @labelList.selection.select_path pt.next!
end
on_label_list_cursor_changed() click to toggle source
# File lib/etti/ui/label-selection-page.rb, line 105
def on_label_list_cursor_changed
    name = @labelListStore.get_value @labelList.selection.selected, 0
    if @previewArea.entryChanged and @pageData[:name] != name
        message = _("The page was changed. Should it be saved?")
        dialog = Etti::MessageDialog.new self.toplevel, :buttons => [:yes, :no, :cancel],
                     :type => :info, :message => message, :title => _('Page was changed')
        ret = dialog.run
        case ret
            when 'cancel'
                idx = @pageDatas.get_page_names.index @pageData[:name]
                @labelList.selection.select_path Gtk::TreePath.new(idx.to_s)
                return
            when 'yes'
                @previewArea.save
        end
    end
    @pageData = @pageDatas.get_page_data name
    signal_emit :page_changed, @pageData
    @previewArea.update_page_data @pageData
end
set_user_settings(settings) click to toggle source
# File lib/etti/ui/label-selection-page.rb, line 68
def set_user_settings settings
    name = settings['name']
    @pageDatas.set_page_data name, settings
    pt = nil
    @labelListStore.each do |model, path, iter|
        if iter[0] == name
            @labelList.selection.select_path path
            # We have to call the update manualy, because sometimes the :cursor_changed signal
            # not emited.
            on_label_list_cursor_changed
            return
        end
    end
end
signal_do_page_changed(foo;) click to toggle source
# File lib/etti/ui/label-selection-page.rb, line 7
def signal_do_page_changed foo; end
validate_user_settings(settings) click to toggle source
# File lib/etti/ui/label-selection-page.rb, line 38
def validate_user_settings settings
    settings.keys.each do |key|
        unless Etti::PageDatas::FIELDS.include? key.to_sym
            next if key == 'source' or key == 'name'
            return _("PageData has invalid property key %s") % key.to_s
            
        end
    end
    [:manufacture, :orderNr, :description, :name].each do |label|
        val = settings[label.to_s]            
        next if val.nil?
        return _("PageData %s is invalid") % label unless val.is_a? String
        return _('PageData name is invalid') if label == :name and val.length() < 1
    end
    [:cols, :rows].each do |label|
        val = settings[label.to_s]            
        next if val.nil?
        return _("PageData %s is invalid") % label unless val.is_a? Numeric and val > 0.0
    end
    [:size, :borders, :padding].each do |label|
        val = settings[label.to_s]            
        next if val.nil?
        return _("PageData %s is invalid") % label unless val.is_a? Array and val.length() == 2
        return _("PageData %s is invalid") % label unless val[0].is_a? Numeric and val[1].is_a? Numeric and val[0] >= 0 and val[1] >= 0
    end
    return _('PageData pageSize is invalid') unless @pageDatas.pageDimensions.include? settings['pageSize']
    nil
end