[ANN] multiple Tk interpreter support

Discussion in 'Ruby' started by Hidetoshi NAGAI, Jul 27, 2003.

  1. Hi,

    I added the features to support multiple Tk interpreters.
    It will be inluded in the next preview release (preview5)
    of Ruby 1.8.0.

    Probably, it is useful to treat safeTk interpreters.
    No need new notation to control some interpreters.
    The following script is a sample of multi-tk.rb.
    In the sample, I use only one proc object to control
    3 interpreters; one default master, one normal-slave
    and one safeTk. No need interpreter option for each method.

    Could you try it? Bug reports are welcome.

    --
    Hidetoshi NAGAI ()

    ============================================
    #!/usr/bin/env ruby
    # This script is a sample of MultiTkIp class

    require "multi-tk"

    # create slave interpreters
    trusted_slave = MultiTkIp.new_slave
    safe_slave = MultiTkIp.new_safeTk


    cmd = Proc.new{|txt|
    #####################
    ## from TkTimer2.rb
    begin
    root = TkRoot.new:)title=>'timer sample')
    rescue
    # safeTk doesn't have permission to call 'wm' command
    end
    label = TkLabel.new:)parent=>root, :relief=>:raised, :width=>10) \
    .pack:)side=>:bottom, :fill=>:both)

    tick = proc{|aobj|
    cnt = aobj.return_value + 5
    label.text format("%d.%02d", *(cnt.divmod(100)))
    cnt
    }

    timer = TkTimer.new(50, -1, tick).start(0, proc{ label.text('0.00'); 0 })

    TkButton.new:)text=>'Start') {
    command proc{ timer.continue unless timer.running? }
    pack:)side=>:left, :fill=>:both, :expand=>true)
    }
    TkButton.new:)text=>'Stop') {
    command proc{ timer.stop if timer.running? }
    pack('side'=>'right','fill'=>'both','expand'=>'yes')
    }

    ev_quit = TkVirtualEvent.new('Control-c', 'Control-q')
    Tk.root.bind(ev_quit, proc{Tk.exit}).focus
    }

    # call on the default master interpreter
    trusted_slave.eval_proc(cmd, 'trusted')
    safe_slave.eval_proc(cmd, 'safe')
    cmd.call('master')

    Tk.mainloop
     
    Hidetoshi NAGAI, Jul 27, 2003
    #1
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.

Share This Page