class HinnerDialog

Public Class Methods

new(side='top',args=nil) click to toggle source
Calls superclass method
# File lib/a-tkcommons.rb, line 3177
  def initialize(side='top',args=nil)
    newargs =  Arcadia.style('panel').update({
      "highlightbackground" => Arcadia.conf('hightlight.link.foreground'),
      "highlightthickness" => 1
    })
    if !args.nil?
      newargs.update(args) 
    end
    super(Arcadia.layout.parent_frame, newargs)

    case side
      when 'top'
#        self.pack('side' =>side,'before'=>Arcadia.layout.root, 'anchor'=>'nw','fill'=>'both', 'padx'=>0, 'pady'=>0, 'expand'=>'yes')
        self.pack('side' =>side,'before'=>Arcadia.layout.root, 'anchor'=>'nw','fill'=>'x', 'padx'=>0, 'pady'=>0)
      when 'bottom'
        self.pack('side' =>side,'after'=>Arcadia.layout.root, 'anchor'=>'nw','fill'=>'x', 'padx'=>0, 'pady'=>0)
    end
    @modal = false
  end

Public Instance Methods

is_modal?() click to toggle source
# File lib/a-tkcommons.rb, line 3299
def is_modal?
  @modal
end
make_scrollable_frame(_frame) click to toggle source
# File lib/a-tkcommons.rb, line 3197
def make_scrollable_frame(_frame)


  TkGrid.rowconfigure(_frame, 0, 'weight'=>1, 'minsize'=>0)
  TkGrid.columnconfigure(_frame, 0, 'weight'=>1, 'minsize'=>0)
  canvas = TkCanvas.new(_frame)
  canvas.grid('row'=>0, 'column'=>0, 'sticky'=>'news')


  v_scroll = Arcadia.wf.scrollbar(_frame,{'orient'=>'vertical'})
  h_scroll = Arcadia.wf.scrollbar(_frame,{'orient'=>'horizontal'})




  p_vscroll = proc{|mode|
    st = TkGrid.info(v_scroll)
    if mode && st.size == 0 then
      v_scroll.grid('row'=>0, 'column'=>1, 'sticky'=>'ns')
    elsif mode == false
      v_scroll.ungrid 
    end
  }

  p_hscroll = proc{|mode|
    st = TkGrid.info(h_scroll)
    if mode && st.size == 0 then
      h_scroll.grid('row'=>1, 'column'=>0, 'sticky'=>'ew')
    elsif mode == false
      h_scroll.ungrid 
    end
  }

  p_do_yscrollcommand = proc{|first,last|
    if first != nil && last != nil
      delta = last.to_f - first.to_f
      if delta != @last_y_delta
        if delta < 1 && delta > 0 && last != @last_y_last
          p_vscroll.call(true)
          begin
            v_scroll.set(first,last)
          rescue Exception => e
            Arcadia.runtime_error(e)
          end
        elsif delta == 1 || delta == 0
          p_vscroll.call(false)
        end
      end
      @last_y_last = last if last.to_f < 1
      @last_y_delta = delta
    end    
  }

  p_do_xscrollcommand = proc{|first,last|
    if first != nil && last != nil
      delta = last.to_f - first.to_f
      if delta != @last_x_delta
        if delta < 1 && delta > 0 && last != @last_x_last
          p_hscroll.call(true)
          begin
            h_scroll.set(first,last)
          rescue Exception => e
            Arcadia.runtime_error(e)
          end
        elsif delta == 1 || delta == 0
          p_hscroll.call(false)
        end
      end
      @last_x_last = last if last.to_f < 1
      @last_x_delta = delta
    end    
  }

  canvas.yscrollbar(v_scroll)
  canvas.xscrollbar(h_scroll)


  canvas.yscrollcommand(proc{|first,last|
    p_do_yscrollcommand.call(first,last)
  })

  canvas.xscrollcommand(proc{|first,last|
    p_do_xscrollcommand.call(first,last)
  })



  frame = TkFrame.new(canvas) 



  frame.bind("Configure", proc{canvas.configure(:scrollregion=>canvas.bbox("all"))})


  cwin = TkcWindow.new(canvas, 0, 0, :window=>frame)

  canvas.scrollregion(cwin.bbox)

  return frame

end
release() click to toggle source
# File lib/a-tkcommons.rb, line 3303
def release
  @modal=false
end
show_modal(_destroy=true) click to toggle source
# File lib/a-tkcommons.rb, line 3307
def show_modal(_destroy=true)
  @modal=true
  Tk.update
  self.grab("set")
  begin
    while is_modal? do 
      Tk.update
      sleep(0.1) 
    end
  ensure
    self.grab("release")
  end
  Tk.update
  self.destroy if _destroy
end