class MyRendererButton

this file is part of manqod manqod is distributed under the CDDL licence the author of manqod is Dobai-Pataky Balint(dpblnt@gmail.com)

Attributes

pc[RW]

Public Class Methods

new(pc) click to toggle source
Calls superclass method
# File lib/FormHolder/Form/InputHolder/Button.rb, line 9
def initialize(pc)
              @pc=pc
              super(item['description'])
              set_relief(Gtk::ReliefStyle::NONE)
              set_image_position(Gtk::PositionType::RIGHT)
              set_use_underline(true)
              signal_connect('clicked'){|me|
                      edebug("#{item['default']} clicked","gtk_button","debug")
                      run_events(item['id'],'form_item-Action')
                      unless target == "-1" || target == "0"
                              if modname=='form'
                                      @form=Myform::MyFormHolder.new("dialog",self,@pc.target_runmode,target)
                                      @form.set_parentM(parentM)
                                      ret=@form.run(text.to_i)
                                      update(ret) if ret and ret>0
                                      notify_changes
                              else
                              mr=MainRouter.new(w=Gtk::Dialog.new)
                              w.vbox.
                                      pack_start(Gtk::HBox.new.
                                              pack_start(back_button=Gtk::Button.new(Gtk::Stock::GO_BACK),false,false).
                                              pack_start(clear_button=Gtk::Button.new(Gtk::Stock::CLEAR),false,false),
                                              false,false).
                                      pack_start(mr)
                              back_button.signal_connect("clicked"){|me,ev|
                                      update(mr.child.list.get_cursor_id.to_s)
                                      w.destroy
                                      notify_changes
                              }
                              clear_button.signal_connect("clicked"){|me,ev|
                                      update("-1")
                                      w.destroy
                                      notify_changes
                              }
                              if sw=get_conf(target,0,"width") and sh=get_conf(target,0,"height")
                                      w.resize(sw.to_i,sh.to_i)# if sw.to_i * sh.to_i >0
                                      else
                                      w.resize(600,400)
                              end
                              sx=get_conf(target,0,"x") || 50
                              sy=get_conf(target,0,"y") || 60
                              w.move(sx.to_i,sy.to_i)

                              w.maximize if get_conf(target,0,"maximized") == "true"
                              w.iconify if get_conf(target,0,"iconified") == "true"
                              w.fullscreen if get_conf(target,0,"fullscreen") == "true"

                              w.set_resizable(true).set_transient_for(@pc.caller.get_ancestor(Gtk::Window)).set_modal(true).show_all
                              w.signal_connect("configure-event"){|me,event|
                                      if nick
                                              set_conf(target,0,"width",event.width.to_s)
                                              set_conf(target,0,"height",event.height.to_s)
                                              set_conf(target,0,"x",event.x.to_s)
                                              set_conf(target,0,"y",event.y.to_s)
                                      end
                                      false
                              }
                              w.signal_connect("window-state-event"){|me,event|
                                      if nick
                                              set_conf(target,0,"maximized",(event.new_window_state &  Gdk::EventWindowState::MAXIMIZED == Gdk::EventWindowState::MAXIMIZED).to_s)
                                              set_conf(target,0,"minimized",(event.new_window_state &  Gdk::EventWindowState::ICONIFIED == Gdk::EventWindowState::ICONIFIED).to_s)
                                              set_conf(target,0,"minimized",(event.new_window_state &  Gdk::EventWindowState::FULLSCREEN == Gdk::EventWindowState::FULLSCREEN).to_s)
                                      end
                                      false
                              }

                              mr.update(self)
                              mr.child.list.set_cursor_id(text.to_i)
                              end
                      end
              }
end

Public Instance Methods

inspect() click to toggle source
# File lib/FormHolder/Form/InputHolder/Button.rb, line 120
def inspect
             "Button(#{item['description']})"
     end
item() click to toggle source
# File lib/FormHolder/Form/InputHolder/Button.rb, line 117
def item
              pc.item
end
modname() click to toggle source
# File lib/FormHolder/Form/InputHolder/Button.rb, line 83
def modname
        @pc.target_module
end
notify_changes() click to toggle source
# File lib/FormHolder/Form/InputHolder/Button.rb, line 127
def notify_changes
        edebug("'#{item['data']}' changed","form")
        pc.changed
        pc.notify_observers(self)
        edebug("'#{item['data']}' emiting 'changed' to observers","form")
end
parentM() click to toggle source
# File lib/FormHolder/Form/InputHolder/Button.rb, line 110
def parentM
              pc.parentM
end
target() click to toggle source
# File lib/FormHolder/Form/InputHolder/Button.rb, line 114
def target
              item['to_call']
end
text() click to toggle source
# File lib/FormHolder/Form/InputHolder/Button.rb, line 106
def text
              item['default'].to_s
end
to_s() click to toggle source
# File lib/FormHolder/Form/InputHolder/Button.rb, line 123
def to_s
        inspect
end
update(new_value=item['default']) click to toggle source
# File lib/FormHolder/Form/InputHolder/Button.rb, line 86
def update(new_value=item['default'])
              item['default']=new_value
              run_events(item['id'],'form_item-BeforeUpdate')
              pc.run_query
              if @pc.type_def.size == 0
                      set_label(item['default'])
                      else
                      s=""
                      @pc.type_def.each_pair{|key,value| 
                              s="#{s}\n" if s.size>0
                              s="#{s}#{@pc.query_result[key]}" if @pc.query_result.has_key?(key)
                      }
                      set_label(s)
                set_image(Gtk::Image.new((parentM.runmode=='info' ? Gtk::Stock::INFO : (text=="-1" || text=="0" ? Gtk::Stock::ADD : Gtk::Stock::EDIT )),Gtk::IconSize.from_name(get_conf(0,0,"button-size"))))
                notify_changes
              end
              edebug("#{text} updated","gtk_button","info")
              run_events(item['id'],'form_item-AfterUpdate')
end