Annotation of capa/capa51/GUITools/ideas/of5tool/createof5.tcl, revision 1.1

1.1     ! albertel    1: proc createMainWindow {} {
        !             2:     global probList
        !             3: 
        !             4:     toplevel .main
        !             5:     
        !             6:     set listFrame [ frame .main.listFrame ]
        !             7:     set buttonFrame1 [ frame .main.buttonFrame1 ]
        !             8:     set buttonFrame2 [ frame .main.buttonFrame2 ]
        !             9:     pack $listFrame $buttonFrame1 $buttonFrame2 -side top
        !            10: 
        !            11:     set probList [ listbox $listFrame.list \
        !            12: 		       -yscrollcommand "$listFrame.scroll set" \
        !            13: 		       -width 80 -height 30 ]
        !            14:     scrollbar $listFrame.scroll \
        !            15:                 -command "$listFrame.list yview" \
        !            16:                 -orient v
        !            17:     pack $probList $listFrame.scroll -side left
        !            18:     pack configure $listFrame.scroll -fill y
        !            19: 
        !            20:     button $buttonFrame1.quit -text "Quit" -command exitProgram
        !            21:     button $buttonFrame1.newQuest -text "New Question" -command addQuestion
        !            22:     button $buttonFrame1.editQuest -text "Edit Question" -command editQuestion
        !            23:     button $buttonFrame1.delQuest -text "Delete Question" -command delQuestion
        !            24:     button $buttonFrame1.moveQuest -text "Move Question" -command moveQuestion
        !            25:     pack $buttonFrame1.quit $buttonFrame1.newQuest $buttonFrame1.editQuest \
        !            26: 	$buttonFrame1.delQuest $buttonFrame1.moveQuest -side left
        !            27: 
        !            28:     button $buttonFrame2.save -text "Save" -command save
        !            29:     button $buttonFrame2.export -text "Create .qz" -command export
        !            30:     button $buttonFrame2.load -text "Load" -command load
        !            31:     pack $buttonFrame2.save $buttonFrame2.export $buttonFrame2.load -side left
        !            32:     
        !            33: }
        !            34: 
        !            35: proc addQuestion {} {
        !            36:     global probList problem
        !            37: 
        !            38:     if { $problem(adding) == 1 || $problem(editing) == 1 } {
        !            39: 	return
        !            40:     }
        !            41: 
        !            42:     set problem(adding) 1
        !            43:     incr problem(num)
        !            44:     
        !            45:     set problemType [toplevel .problemType]
        !            46:     
        !            47:     label $problemType.label -text "Select a Type of Problem:"
        !            48:     button $problemType.multipleChoice -text "Multiple Choice" \
        !            49: 	-command " 
        !            50: 	    destroy .problemType 
        !            51: 	    MCadd
        !            52: 	"
        !            53:     pack $problemType.label $problemType.multipleChoice
        !            54: }
        !            55: 
        !            56: proc updateProblemList { probnum } {
        !            57:     global problem probList
        !            58: 
        !            59:     set numProbs [$probList size]
        !            60:     
        !            61:     if { $numProbs < $probnum } {
        !            62:     } else {
        !            63: 	$probList delete [ expr $probnum - 1 ]
        !            64:     }
        !            65:     
        !            66:     set quest [string range $problem(prob.$probnum.quest) 0 40 ]
        !            67:     set string "$probnum $problem(prob.$probnum.type) $quest"
        !            68:     
        !            69:     $probList insert [expr $probnum - 1] "$string"
        !            70: }
        !            71: 
        !            72: proc editQuestion {} {
        !            73:     global problem probList
        !            74: 
        !            75:     set probnum [$probList curselection]
        !            76:     if { $probnum == "" } { return }
        !            77:     #listboxes count from zero, we count from 1
        !            78:     incr probnum 
        !            79:     set problem(editing) $probnum
        !            80: 
        !            81:     switch $problem(prob.$probnum.type) {
        !            82: 	"Multiple Choice" 
        !            83: 	{
        !            84: 	    MCadd
        !            85: 	    for {set i 1 } { $i <= $problem(prob.$probnum.numleaf) } { incr i } {
        !            86: 		MCupdateLeafList $i $probnum
        !            87: 	    }
        !            88: 	}
        !            89: 	-
        !            90: 	{
        !            91: 	    tk_messageDialogue -icon error -type ok \
        !            92: 		-message "Unable to edit questions of type $problem(prob.$probnum.type)"
        !            93: 	}
        !            94:     }
        !            95: }
        !            96: 
        !            97: proc save {} {
        !            98:     global problem
        !            99:     
        !           100:     set file [tk_getSaveFile -defaultextension .hack  \
        !           101: 		  -filetypes {{{Hacked GUI Quizzer file} {.hack}}} ]
        !           102:     if { $file == "" } { return }
        !           103:     set fileid [open "$file" "w" ]
        !           104:     foreach i [array names problem] {
        !           105: 	puts $fileid "set problem($i) \"$problem($i)\""
        !           106:     }
        !           107:     close $fileid
        !           108: }
        !           109: 
        !           110: proc load {} {
        !           111:     global problem probList
        !           112: 
        !           113:     set file [tk_getOpenFile -defaultextension .hack \
        !           114: 		  -filetypes {{{Hacked GUI Quizzer file} {.hack}}} ]
        !           115:     if {$file == "" } { return }
        !           116:     source $file
        !           117:     
        !           118:     $probList delete 0 end
        !           119:     for { set i 1 } { $i <= $problem(num) } { incr i } {
        !           120: 	updateProblemList $i
        !           121:     }
        !           122: }
        !           123: 
        !           124: proc exitProgram {} {
        !           125:     global problem
        !           126:     exit
        !           127: }
        !           128: 
        !           129: wm withdraw .
        !           130: set problem(num) 0
        !           131: set problem(adding) 0
        !           132: set problem(editing) 0
        !           133: source "export.tcl"
        !           134: source "multiplechoice.tcl"
        !           135: MCinit
        !           136: 
        !           137: createMainWindow

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>