class Etti::LabelLayoutPage
Attributes
layoutPreview[R]
Public Class Methods
new()
click to toggle source
Calls superclass method
# File lib/etti/ui/label-layout-page.rb, line 8 def initialize super :vertical #:orientation => :vertical hbox = Gtk::Box.new :horizontal self.pack_start hbox, :expand => true, :fill => true create_property_view hbox.pack_start @propertyView, :expand => false, :fill => false, :padding => 6 paned = Gtk::Paned.new :horizontal hbox.pack_start paned, :expand => true, :fill => true @layoutPreview = Etti::LabelLayout.new @propertyViews paned.pack1 @layoutPreview, :resize => true, :shrink => true ebox = Gtk::Box.new :horizontal paned.pack2 ebox, :resize => false, :shrink => false label = Gtk::Label.new _(' Drag the elements over ') label.angle = 90 ebox.pack_start label, :expand => false, :fill => false, :padding => 8 @labelElements = Etti::LabelElements.new ebox.pack_start @labelElements, :expand => true, :fill => true end
Public Instance Methods
create_property_view()
click to toggle source
# File lib/etti/ui/label-layout-page.rb, line 114 def create_property_view @propertyView = Gtk::Box.new :vertical @propertyViews = {} sizeGroup = Gtk::SizeGroup.new :horizontal [[Etti::PropertyEditorData::NONE_PROPS, _('nothing selected'), :none], [Etti::PropertyEditorData::TEXTS_PROPS, _('Text element'), :text], [Etti::PropertyEditorData::DATA_PROPS, _('Data element'), :data]].each_with_index do |pair, i| pv = Rgw::PropertyEditor.new pair[0], pair[1] sizeGroup.add_widget pv @propertyViews[pair[2]] = pv @propertyView.pack_start pv, :expand => false, :fill => false, :padding => 0 pv.signal_connect(:property_changed) do |widget, name, val| unless pv.selectedElement.nil? pv.selectedElement.set_by_name name, val @layoutPreview.queue_draw end end end end
get_user_settings()
click to toggle source
# File lib/etti/ui/label-layout-page.rb, line 36 def get_user_settings settings = {} settings['scale'] = @layoutPreview.scale settings['centerX'] = @layoutPreview.centerX settings['centerY'] = @layoutPreview.centerY elementData = [] @layoutPreview.elements.each {|element| elementData << element.to_h} settings['elements'] = elementData settings end
initialize_property_views()
click to toggle source
# File lib/etti/ui/label-layout-page.rb, line 103 def initialize_property_views @propertyViews.each_pair do |key, val| if key == :none val.show else val.hide end end end
set_element_data(heads, data)
click to toggle source
# File lib/etti/ui/label-layout-page.rb, line 97 def set_element_data heads, data @labelElements.elements = data.length == 0 ? nil : heads @layoutPreview.set_element_data heads, data end
set_user_settings(settings)
click to toggle source
# File lib/etti/ui/label-layout-page.rb, line 71 def set_user_settings settings @layoutPreview.scale = settings['scale'] @layoutPreview.centerX = settings['centerX'] @layoutPreview.centerY = settings['centerY'] @layoutPreview.elements.clear settings['elements'].each do |element| el = nil if element['elementType'] == 'text' el = Etti::Element::Text.new element['text'] elsif element['elementType'] == 'data' el = Etti::Element::Data.new element['dataGroup'], element['text'] end el.from_h element @layoutPreview.elements << el end end
update_page_data(pageData)
click to toggle source
# File lib/etti/ui/label-layout-page.rb, line 91 def update_page_data pageData @pageData = pageData @layoutPreview.update_page_data pageData end
validate_user_settings(settings)
click to toggle source
# File lib/etti/ui/label-layout-page.rb, line 48 def validate_user_settings settings return _('LabelLayout scale is not a Numeric') unless settings['scale'].is_a? Numeric return _('LabelLayout scale is out of range') if settings['scale'] < Etti::LabelLayout::SCALE_MIN or settings['scale'] > Etti::LabelLayout::SCALE_MAX return _('LabelLayout centerX is not a Numeric') unless settings['centerX'].is_a? Numeric return _('LabelLayout centerY is not a Numeric') unless settings['centerY'].is_a? Numeric return _('LabelLayout elements is not an Array') unless settings['elements'].is_a? Array settings['elements'].each do |element| el = nil if element['elementType'] == 'text' el = Etti::Element::Text.new 'vali' elsif element['elementType'] == 'data' el = Etti::Element::Data.new :dg, 'vali' else return _("LabelLayout element type %s is unknown") % element['elementType'].to_s end ret = el.validate_from_h element return ret if ret end nil end