How do I run this tcl program?(solved)

Using applications, configuring, problems
Post Reply
Message
Author
User avatar
chrisperry
Posts: 50
Joined: Fri 02 Sep 2005, 18:52
Location: Georgetown, Ky

How do I run this tcl program?(solved)

#1 Post by chrisperry »

i copied a tcl program to mess around with,
the question is how do i make it run?
i can run other tcl aps just by clicking on them.
i am running 1.0.4

package require Tk
wm title . Calculator
grid [entry .e -textvar e -just right] -columnspan 5
bind .e <Return> =
set n 0
foreach row {
{7 8 9 + -}
{4 5 6 * /}
{1 2 3 ( )}
{C 0 . = }
} {
foreach key $row {
switch -- $key {
= {set cmd =}
C {set cmd {set clear 1; set e ""}}
default {set cmd "hit $key"}
}
lappend keys [button .[incr n] -text $key -command $cmd]
}
eval grid $keys -sticky we ;#-padx 1 -pady 1
set keys
  • }
    grid .$n -columnspan 2 ;# make last key (=) double wide
    proc = {} {
    regsub { =.+} $::e "" ::e ;# maybe clear previous result
    if [catch {lappend ::e = [set ::res [expr 1.0*$::e]]}] {
    .e config -fg red
    }
    .e xview end
    set ::clear 1
    }
    proc hit {key} {
    if $::clear {
    set ::e ""
    if ![regexp {[0-9().]} $key] {set ::e $::res}
    .e config -fg black
    .e icursor end
    set ::clear 0
    }
    .e insert end $key
    }
    set clear 0
    focus .e ;# allow keyboard input
    wm resizable . 0 0
    [Rob Hegt] - By adding the below 'fix' proc and changing the line doing the expr to the one given below, it is no longer necessary to add a . in case of a division.

    proc fix {str} {
    if {[string first "." "$str"] < 0} {
    if {[string first "/" "$str"] > -1} {
    set str "$str."
    }
    }
    return "$str"
    }
    ...

    if [catch {lappend ::e = [set ::res [expr [fix $::e]]]}] {
Last edited by chrisperry on Fri 23 Sep 2005, 17:28, edited 1 time in total.

User avatar
Ian
Official Dog Handler
Posts: 1234
Joined: Wed 04 May 2005, 12:00
Location: Queensland

#2 Post by Ian »

Open it in an editor like Beaver.

At the start of the script enter #!/usr/bin/wish and save the script.

That is Shift key + 3 (to give #) Shift key+1(to give the !) Hash Bang, then the path to 'wish' which will run the script.

Ensure that it is executable (you can do that in rox by right clicking on the program and selecting permissions and setting executable/readable to yes).

User avatar
chrisperry
Posts: 50
Joined: Fri 02 Sep 2005, 18:52
Location: Georgetown, Ky

thank you

#3 Post by chrisperry »

thanks for your help
works great
chris

Post Reply