X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=apps%2Fcvenv%2Fcvenv.tcl;fp=apps%2Fcvenv%2Fcvenv.tcl;h=0000000000000000000000000000000000000000;hb=e4c14cdbdf2fe805e79cd96ded236f57e7b89060;hp=69c5f1afedf8e1275182c0aee3f9c65899e54635;hpb=454138ff8a20f6edb9b65a910101403d8b520643;p=opencv diff --git a/apps/cvenv/cvenv.tcl b/apps/cvenv/cvenv.tcl deleted file mode 100644 index 69c5f1a..0000000 --- a/apps/cvenv/cvenv.tcl +++ /dev/null @@ -1,1313 +0,0 @@ -######################################################################################### -# -# IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -# -# By downloading, copying, installing or using the software you agree to this license. -# If you do not agree to this license, do not download, install, -# copy or use the software. -# -# -# Intel License Agreement -# For Open Source Computer Vision Library -# -# Copyright (C) 2000, Intel Corporation, all rights reserved. -# Third party copyrights are property of their respective owners. -# -# Redistribution and use in source and binary forms, with or without modification, -# are permitted provided that the following conditions are met: -# -# * Redistribution's of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# -# * Redistribution's in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# * The name of Intel Corporation may not be used to endorse or promote products -# derived from this software without specific prior written permission. -# -# This software is provided by the copyright holders and contributors "as is" and -# any express or implied warranties, including, but not limited to, the implied -# warranties of merchantability and fitness for a particular purpose are disclaimed. -# In no event shall the Intel Corporation or contributors be liable for any direct, -# indirect, incidental, special, exemplary, or consequential damages -# (including, but not limited to, procurement of substitute goods or services; -# loss of use, data, or profits; or business interruption) however caused -# and on any theory of liability, whether in contract, strict liability, -# or tort (including negligence or otherwise) arising in any way out of -# the use of this software, even if advised of the possibility of such damage. -# -# - -#set image_path "./" - -if {$tcl_platform(platform) == "windows"} { - set default_normal_bg SystemButtonFace - set default_normal_fg SystemButtonText - set default_light_bg SystemScrollbar - set default_dark_bg SystemDisabledText - set default_window_bg SystemWindow - set default_window_fg SystemWindowText - set default_select_bg SystemHighlight - set default_select_fg SystemHighlightText -} else { - set default_normal_bg #909090 - set default_normal_fg #000000 - set default_light_bg #000000 - set default_dark_bg #303030 - set default_window_bg #909090 - set default_window_fg #000000 - set default_select_bg #000080 - set default_select_fg #ffffff -} - -set defaults {default_normal_bg default_normal_fg default_light_bg default_dark_bg\ - default_window_bg default_window_fg default_select_bg default_select_fg} - -# Default Colors -set EditorTextbg $default_window_bg -set EditorTextfg $default_window_fg -set EditorStringfg #00FF00 -set EditorNumberfg #00FFFF -set EditorCommentfg #808080 -set EditorKeywordfg #FFFF00 -set EditorSelectbg $default_select_bg -set EditorSelectfg $default_select_fg -set EditorCursorbg $default_light_bg - -# Default Fonts -set EditorTextfont "{Courier} 12 normal roman" -set EditorStringfont "{Courier} 12 normal roman" -set EditorNumberfont "{Courier} 12 normal roman" -set EditorCommentfont "{Courier} 12 normal italic" -set EditorKeywordfont "{Courier} 12 normal roman" - -pLoadColors - -proc ClearColors {offset1 offset2 fedit} { - foreach i [$fedit tag names] { - #if {$i!="select"} then { - $fedit tag remove $i "0.0 + $offset1 chars" "0.0 + $offset2 chars" - # } - } -} - -namespace eval CVEnv { - variable mainf - variable tb - variable statustext - variable inputvar "" - variable inputdata "" - variable inputlist {} - - variable pw - variable ptop - variable pbot - variable pwch - variable prig - variable nblef - variable nbrig - variable nbbot - variable outtx - variable parsetx - variable tree - variable inputcb - - variable showtb 1 - variable showstb 1 - variable showlp 1 - variable showbp 1 - - variable savebefore 1 - variable clearoutputbefore 1 - variable clearerrorbefore 1 - - variable curfile - variable curpage - variable curframe - variable curln "--" - variable curcol "--" - variable curinput 0 - - variable pagesnum 0 - variable pagescount 0 - - variable files {} - variable pages {} -} - -proc CVEnv::leftpane {on} { - if {$on} { - pack forget $CVEnv::nbrig - - pack $CVEnv::nbrig -in $CVEnv::prig -fill both -expand yes -padx 1 -pady 1 - pack $CVEnv::pwch -fill both -expand yes - } else { - pack forget $CVEnv::nbrig - pack forget $CVEnv::pwch - - pack $CVEnv::nbrig -in $CVEnv::ptop -fill both -expand yes -padx 1 -pady 1 - } -} - -proc CVEnv::longmenu {on} { - if {$on} { - .menubar.file entryconfig 2 -state active - .menubar.file entryconfig 4 -state active - .menubar.file entryconfig 5 -state active - - .menubar insert 1 cascade -label "Edit" -menu .menubar.edit\ - -underline 0 - } else { - .menubar.file entryconfig 2 -state disabled - .menubar.file entryconfig 4 -state disabled - .menubar.file entryconfig 5 -state disabled - - .menubar delete 1 1 - } -} - -proc CVEnv::longstbar {on} { - if {$on} { - pack $CVEnv::mainf.status.indf.f0 -side left -fill y -expand 1 - } else { - pack forget $CVEnv::mainf.status.indf.f0 - } -} - -proc CVEnv::longbar {on} { - if {$on} { - pack $CVEnv::tb.bbox1 -side left -anchor w - pack $CVEnv::tb.sep1 -side left -fill y -padx 4 -anchor w - pack $CVEnv::tb.bbox2 -side left -anchor w - pack $CVEnv::tb.sep2 -side left -fill y -padx 4 -anchor w - pack $CVEnv::tb.bbox3 -side left -anchor w - pack $CVEnv::tb.sep3 -side left -fill y -padx 4 -anchor w - } else { - pack forget $CVEnv::tb.sep3 - pack forget $CVEnv::tb.bbox3 - pack forget $CVEnv::tb.sep2 - pack forget $CVEnv::tb.bbox2 - pack forget $CVEnv::tb.sep1 - pack forget $CVEnv::tb.bbox1 - } -} - -proc CVEnv::about {} { - set dlg [Dialog .aboutdlg -parent . -modal local \ - -separator 1 \ - -title "About CVEnv" \ - -side right \ - -anchor s \ - -default 0] - $dlg add -name ok -width 5 - - set top [$dlg getframe] - - image create photo original -file [file join $::image_path pictures/CVEnv.gif] - canvas $top.c -bd 2 -relief ridge -width 295 -height 195 - $top.c create image 0 0 -anchor nw -image original - pack $top.c -side top -expand yes -fill x - - set frame [frame $top.f -background white -bd 2 -relief ridge] - set lab [label $frame.lab1 -text \ - "Program CVEnv v. 1.0 \nIntel corporation. 2000-2001 y." \ - -background white -font {times 8}] - pack $lab - pack $frame -side top -expand yes -fill x -padx 2 -pady 2 - - $dlg draw - destroy $dlg -} - -proc CVEnv::modify_font {lbtypes lbcolors samf font} { - global EditorTextfont - global EditorStringfont - global EditorNumberfont - global EditorCommentfont - global EditorKeywordfont - - set curtype [$lbtypes get [$lbtypes curselection]] - set curcolor [$lbcolors get [$lbcolors curselection]] - - set name font - set name $curtype$curcolor$name - set $name $font - - $samf.label configure -font $font -} - -proc CVEnv::modify_fg {lbtypes lbcolors samf cbfgf cbbgf color} { - global EditorTextfg - global EditorStringfg - global EditorNumberfg - global EditorCommentfg - global EditorKeywordfg - global EditorSelectfg - - set curtype [$lbtypes get [$lbtypes curselection]] - set curcolor [$lbcolors get [$lbcolors curselection]] - - set name fg - set name $curtype$curcolor$name - set $name $color - - $samf.label configure -fg $color - $cbfgf configure -entrybg $color -selectbackground $color -text "" -} - -proc CVEnv::modify_bg {lbtypes lbcolors samf cbfgf cbbgf color} { - global EditorTextbg - global EditorSelectbg - global EditorCursorbg - - set curtype [$lbtypes get [$lbtypes curselection]] - set curcolor [$lbcolors get [$lbcolors curselection]] - - set name bg - set name $curtype$curcolor$name - set $name $color - - $samf.label configure -bg $color - $samf configure -bg $color - $cbbgf configure -entrybg $color -selectbackground $color -text "" -} - -proc getvar {name value} { - upvar $name localVar - upvar $value lvalue - - set localVar $lvalue -} - -proc CVEnv::default_bg {lbtypes lbcolors samf cbfgf cbbgf} { - global defaults - global default_normal_bg - global default_normal_fg - global default_light_bg - global default_dark_bg - global default_window_bg - global default_window_fg - global default_select_bg - global default_select_fg - - set index [$cbbgf getvalue] - set name [lindex $defaults $index] - set color "" - - ::getvar color $name - - if [string compare $color ""] { - CVEnv::modify_bg $lbtypes $lbcolors $samf $cbfgf $cbbgf $color - } -} - -proc CVEnv::default_fg {lbtypes lbcolors samf cbfgf cbbgf} { - global defaults - global default_normal_bg - global default_normal_fg - global default_light_bg - global default_dark_bg - global default_window_bg - global default_window_fg - global default_select_bg - global default_select_fg - - set index [$cbfgf getvalue] - set name [lindex $defaults $index] - set color "" - - ::getvar color $name - - if [string compare $color ""] { - CVEnv::modify_fg $lbtypes $lbcolors $samf $cbfgf $cbbgf $color - } -} - -proc CVEnv::getconf {lbtypes lbcolors samf cbfgf cbbgf} { - global EditorTextbg - global EditorTextfg - global EditorStringfg - global EditorNumberfg - global EditorCommentfg - global EditorKeywordfg - global EditorSelectbg - global EditorSelectfg - global EditorCursorbg - global EditorTextfont - global EditorStringfont - global EditorNumberfont - global EditorCommentfont - global EditorKeywordfont - - set curtype [$lbtypes get [$lbtypes curselection]] - set curcolor [$lbcolors get [$lbcolors curselection]] - - if {([string compare $curcolor "Text"]) && ([string compare $curcolor "Select"])} { - if {([string compare $curcolor "Cursor"])} { - - $cbbgf configure -state disabled - $cbfgf configure -state normal - - set name fg - set name $curtype$curcolor$name - set tmp "" - ::getvar tmp $name - if [string compare $tmp ""] { - CVEnv::modify_fg $lbtypes $lbcolors $samf $cbfgf $cbbgf $tmp - } - - CVEnv::modify_bg $lbtypes $lbcolors $samf $cbfgf $cbbgf $EditorTextbg - - set name font - set name $curtype$curcolor$name - set tmp "" - ::getvar tmp $name - - CVEnv::modify_font $lbtypes $lbcolors $samf $tmp - - } else { - - $cbfgf configure -state disabled - $cbbgf configure -state normal - - set name bg - set name $curtype$curcolor$name - set tmp "" - ::getvar tmp $name - if [string compare $tmp ""] { - CVEnv::modify_bg $lbtypes $lbcolors $samf $cbfgf $cbbgf $tmp - } - - CVEnv::modify_fg $lbtypes $lbcolors $samf $cbfgf $cbbgf $EditorTextfg - CVEnv::modify_font $lbtypes $lbcolors $samf $EditorTextfont - } - - } else { - - $cbbgf configure -state normal - $cbfgf configure -state normal - - set name bg - set name $curtype$curcolor$name - set tmp "" - ::getvar tmp $name - if [string compare $tmp ""] { - CVEnv::modify_bg $lbtypes $lbcolors $samf $cbfgf $cbbgf $tmp - } - - set name fg - set name $curtype$curcolor$name - set tmp "" - ::getvar tmp $name - if [string compare $tmp ""] { - CVEnv::modify_fg $lbtypes $lbcolors $samf $cbfgf $cbbgf $tmp - } - - if {([string compare $curcolor "Select"])} { - set name font - set name $curtype$curcolor$name - set tmp "" - ::getvar tmp $name - - CVEnv::modify_font $lbtypes $lbcolors $samf $tmp - } else { - CVEnv::modify_font $lbtypes $lbcolors $samf $EditorTextfont - } - } -} - -proc CVEnv::custom_bg {lbtypes lbcolors samf cbfgf cbbgf} { - - #set initialColor [$button cget -$name] - - set color [tk_chooseColor -title "Choose a color" -parent .colordlg \ - -initialcolor blue] - if [string compare $color ""] { - CVEnv::modify_bg $lbtypes $lbcolors $samf $cbfgf $cbbgf $color - } - -} - -proc CVEnv::custom_fg {lbtypes lbcolors samf cbfgf cbbgf} { - - #set initialColor [$button cget -$name] - - set color [tk_chooseColor -title "Choose a color" -parent .colordlg \ - -initialcolor blue] - if [string compare $color ""] { - CVEnv::modify_fg $lbtypes $lbcolors $samf $cbfgf $cbbgf $color - } - -} - -proc CVEnv::colordialog {} { - set dlg [Dialog .colordlg -parent . -modal local \ - -separator 1 \ - -title "Colors configuration" \ - -side bottom \ - -anchor c \ - -default 2] - #$dlg add -name reset -width 7 -text Reset - $dlg add -name ok -width 7 - $dlg add -name cancel -width 7 - - set top [$dlg getframe] - - set frame [frame $top.flef ] - set titlebox [TitleFrame $top.flef.titlebox -font {times 8} \ - -side left -text Types] - set f [$titlebox getframe] - set sw [ScrolledWindow $f.sw -auto both] - set lbtypes [listbox $sw.lbtypes -width 21 -height 6 -exportselection no] - $lbtypes insert end "Editor" - $lbtypes selection set 0 - - $sw setwidget $sw.lbtypes - pack $sw.lbtypes -fill both -expand yes - pack $sw -side top -expand yes -fill both - pack $titlebox -side top - - set framebox [TitleFrame $frame.framebox -font {times 8} \ - -side left -text Sample] - set f [$framebox getframe] - - set samf [frame $f.samf -width 148 -height 56 \ - -bg white -bd 0 -relief flat \ - -highlightthickness 1 -takefocus 0 \ - -highlightbackground black \ - -highlightcolor black] - - set lab [label $samf.label \ - -background white -foreground black \ - -borderwidth 0 -takefocus 0 -highlightthickness 0 \ - -text "Sample text"] - place $lab -relx 0.5 -rely 0.5 -anchor c - pack $samf -pady 4 -fill x - - pack $framebox -side top - pack $frame -side left -expand yes -fill x -padx 2 -pady 2 - - - set frame [frame $top.frig] - set tf [TitleFrame $top.frig.f -font {times 8} \ - -side left -text Font] - set f [$tf getframe] - - #set _wfont [SelectFont $f.font -type toolbar] - set _wfont [SelectFont $f.font -type toolbar -command ""] - - pack $_wfont -side left -anchor w - - pack $tf -side top -fill x -expand yes - - set titlebox [TitleFrame $top.frig.titlebox -font {times 8} \ - -side left -text Colors] - set f [$titlebox getframe] - set sw [ScrolledWindow $f.sw -auto both] - set lbcolors [listbox $sw.lbcolors -width 41 -height 6 -exportselection no] - - $lbcolors insert end Text - $lbcolors insert end String - $lbcolors insert end Number - $lbcolors insert end Comment - $lbcolors insert end Keyword - $lbcolors insert end Select - $lbcolors insert end Cursor - $lbcolors selection set 0 - - $sw setwidget $sw.lbcolors - pack $sw.lbcolors -fill both -expand yes - pack $sw -side top -expand yes -fill both - - set lef [frame $f.flef -bd 2 -relief ridge] - set fontlab [label $lef.fontlab -text Foreground -font {times 8}] - pack $fontlab -side top -anchor nw - set fontcb [ComboBox $lef.fontcb -width 19 -editable no \ - -values {default_normal_bg default_normal_fg default_light_bg default_dark_bg\ - default_window_bg default_window_fg default_select_bg default_select_fg}] - - pack $fontcb -side top - pack $lef -side left -fill x -expand yes - set rig [frame $f.frig -bd 2 -relief ridge] - set sizelab [label $rig.sizelab -text Background -font {times 8}] - pack $sizelab -side top -anchor nw - set sizecb [ComboBox $rig.fontcb -width 19 -editable no\ - -values {default_normal_bg default_normal_fg default_light_bg default_dark_bg\ - default_window_bg default_window_fg default_select_bg default_select_fg}] - - $fontcb configure -modifycmd "CVEnv::default_fg $lbtypes $lbcolors $samf $fontcb $sizecb" - $fontcb bind "CVEnv::custom_fg $lbtypes $lbcolors $samf $fontcb $sizecb" - $fontcb bind "CVEnv::custom_fg $lbtypes $lbcolors $samf $fontcb $sizecb" - - $sizecb configure -modifycmd "CVEnv::default_bg $lbtypes $lbcolors $samf $fontcb $sizecb" - $sizecb bind "CVEnv::custom_bg $lbtypes $lbcolors $samf $fontcb $sizecb" - $sizecb bind "CVEnv::custom_bg $lbtypes $lbcolors $samf $fontcb $sizecb" - - bind $lbcolors <> "CVEnv::getconf $lbtypes $lbcolors $samf $fontcb $sizecb" - CVEnv::getconf $lbtypes $lbcolors $samf $fontcb $sizecb - pack $sizecb -side top - pack $rig -side right -fill x -expand yes - pack $titlebox -side top - - $_wfont configure -command "CVEnv::modify_font $lbtypes $lbcolors $samf \[$_wfont cget -font\]" - pack $frame -side left -expand yes -fill x -padx 2 -pady 2 - - set ret [$dlg draw] - if {$ret == "1"} { - pLoadColors - } else { - pSaveColors - - for {set i 1} {$i <= $CVEnv::pagesnum} {incr i} { - set frame [$CVEnv::nbrig getframe p$i].sw.tx - - $frame configure -wrap none -font $::EditorTextfont\ - -bg $::EditorTextbg -selectbackground $::EditorSelectbg \ - -fg $::EditorTextfg -selectforeground $::EditorSelectfg \ - -insertbackground $::EditorCursorbg - - $frame tag configure text -font $::EditorTextfont -foreground $::EditorTextfg - $frame tag configure string -font $::EditorStringfont -foreground $::EditorStringfg - $frame tag configure number -font $::EditorNumberfont -foreground $::EditorNumberfg - $frame tag configure comment -font $::EditorCommentfont -foreground $::EditorCommentfg - $frame tag configure keyword -font $::EditorKeywordfont -foreground $::EditorKeywordfg - } - - } - destroy $dlg -} - -proc CVEnv::confdialog {} { - set dlg [Dialog .confdlg -parent . -modal local \ - -separator 1 \ - -title "Configuration" \ - -side bottom \ - -anchor c \ - -default 2] - $dlg add -name ok -width 7 - $dlg add -name cancel -width 7 - - set top [$dlg getframe] - - set frame [frame $top.flef ] - set titlebox [TitleFrame $top.flef.titlebox \ - -side left -text "Before execute options"] - set f [$titlebox getframe] - set chk1 [checkbutton $f.chk1 -text "Save text" \ - -variable CVEnv::savebefore] - pack $chk1 -side top -anchor nw - - set chk2 [checkbutton $f.chk2 -text "Clear output page" \ - -variable CVEnv::clearoutputbefore] - pack $chk2 -side top -anchor nw - - set chk3 [checkbutton $f.chk3 -text "Clear error page" \ - -variable CVEnv::clearerrorbefore] - pack $chk3 -side top -anchor nw - - pack $titlebox -side top - pack $frame -side left -expand yes -fill x -padx 2 -pady 2 - - - set frame [frame $top.frig] - pack $frame -side left -expand yes -fill x -padx 2 -pady 2 - - set ret [$dlg draw] - - destroy $dlg -} - -proc CVEnv::raiseeditor { } { - set CVEnv::curpage [$CVEnv::nbrig raise] - set CVEnv::curframe [$CVEnv::nbrig getframe $CVEnv::curpage].sw.tx - set pos [lsearch $CVEnv::pages $CVEnv::curpage] - set CVEnv::curfile [lindex $CVEnv::files $pos] -} - -proc CVEnv::createeditor {page text} { - global EditorTextbg - global EditorTextfg - global EditorStringfg - global EditorNumberfg - global EditorCommentfg - global EditorKeywordfg - global EditorSelectbg - global EditorSelectfg - global EditorCursorbg - - global EditorTextfont - global EditorStringfont - global EditorNumberfont - global EditorCommentfont - global EditorKeywordfont - - set path [$CVEnv::nbrig insert end $page -text $text \ - -leavecmd { set CVEnv::curln "--" - set CVEnv::curcol "--"} \ - -raisecmd CVEnv::raiseeditor] - set sw [ScrolledWindow $path.sw -auto none] - - set CVEnv::curframe [text $sw.tx -wrap none -font $EditorTextfont\ - -bg $EditorTextbg -selectbackground $EditorSelectbg \ - -fg $EditorTextfg -selectforeground $EditorSelectfg \ - -insertbackground $EditorCursorbg] - - $sw setwidget $sw.tx - pack $sw.tx -fill both -expand yes - pack $sw -side top -expand yes -fill both - - $CVEnv::curframe tag configure text -font $EditorTextfont -foreground $EditorTextfg - $CVEnv::curframe tag configure string -font $EditorStringfont -foreground $EditorStringfg - $CVEnv::curframe tag configure number -font $EditorNumberfont -foreground $EditorNumberfg - $CVEnv::curframe tag configure comment -font $EditorCommentfont -foreground $EditorCommentfg - $CVEnv::curframe tag configure keyword -font $EditorKeywordfont -foreground $EditorKeywordfg - - $CVEnv::curframe tag add normal 0.0 end - $CVEnv::curframe index 0.0 - - #----------------------------------------------------------- - bind $CVEnv::curframe { - pParsebegin - } - - bind $CVEnv::curframe { - pParseend - #set frame [$CVEnv::nbrig getframe $CVEnv::curpage] - set curindex [$CVEnv::curframe index insert] - set coordlist [split $curindex .] - set CVEnv::curln [lindex $coordlist 0] - set CVEnv::curcol [lindex $coordlist 1] - incr CVEnv::curcol - } - - bind $CVEnv::curframe { - #set frame [$CVEnv::nbrig getframe $CVEnv::curpage] - set curindex [$CVEnv::curframe index insert] - set coordlist [split $curindex .] - set CVEnv::curln [lindex $coordlist 0] - set CVEnv::curcol [lindex $coordlist 1] - $CVEnv::nbrig see $CVEnv::curpage - - incr CVEnv::curcol - update - } - - bind $CVEnv::curframe { - set CVEnv::curln "--" - set CVEnv::curcol "--" - } - - bind $CVEnv::curframe CVEnv::execute - - #----------------------------------------------------------- -} - -proc CVEnv::new {} { - - incr CVEnv::pagescount - incr CVEnv::pagesnum - - set CVEnv::curpage p[expr $CVEnv::pagescount] - set CVEnv::curfile "" - lappend CVEnv::pages $CVEnv::curpage - lappend CVEnv::files $CVEnv::curfile - - set text [format "/* %u */" $CVEnv::pagescount] - CVEnv::createeditor $CVEnv::curpage $text - - if {$CVEnv::pagesnum == 1} { - CVEnv::longmenu 1 - CVEnv::longbar 1 - CVEnv::longstbar 1 - } - - $CVEnv::nbrig see [$CVEnv::nbrig pages end] - $CVEnv::nbrig raise [$CVEnv::nbrig pages end] -} - -proc CVEnv::loadfile {name frame} { - set file [::open $name r] - pParsebegin - - $frame insert 0.0 [read $file] - ::close $file - $frame index 0.0 - - pParseend -} - -proc CVEnv::open {parent} { - set types { - {"C files" {.c .h} } - {"Text files" {.txt} } - {"All files" *} - } - - set file [tk_getOpenFile -filetypes $types -parent $parent] - if [string compare $file ""] { - - if [$CVEnv::tree exists $file] { - #set page [$CVEnv::tree itemcget $file -data] - set pos [lsearch $CVEnv::files $file] - set page [lindex $CVEnv::pages $pos] - $CVEnv::nbrig see $page - $CVEnv::nbrig raise $page - } else { - incr CVEnv::pagescount - incr CVEnv::pagesnum - - set CVEnv::curfile $file - set text [lindex [split $file /] end] - set CVEnv::curpage p[expr $CVEnv::pagescount] - lappend CVEnv::files $CVEnv::curfile - lappend CVEnv::pages $CVEnv::curpage - - CVEnv::createeditor $CVEnv::curpage $text - - CVEnv::loadfile $file $CVEnv::curframe - - if {$CVEnv::pagesnum == 1} { - CVEnv::longmenu 1 - CVEnv::longbar 1 - CVEnv::longstbar 1 - } - - $CVEnv::tree insert end files $file -text $file \ - -image [image create photo -file [file join $::image_path pictures/file.gif]] - - $CVEnv::nbrig see [$CVEnv::nbrig pages end] - $CVEnv::nbrig raise [$CVEnv::nbrig pages end] - } - } -} - -proc CVEnv::save {} { - if {$CVEnv::curfile != ""} { - #set frame [ $CVEnv::nbrig getframe $CVEnv::curpage] - CVEnv::writefile $CVEnv::curfile $CVEnv::curframe - } else { - CVEnv::saveas . - } -} - -proc CVEnv::writefile {name frame} { - set file [::open $name w] - set tx [$frame get 1.0 "end-1 chars"] - puts $file $tx - flush $file - ::close $file -} - -proc CVEnv::saveas {parent} { - set types { - {"C source files" {.c} } - {"C header files" {.h} } - {"Text files" {.txt} } - {"All files" *} - } - - set file [tk_getSaveFile -filetypes $types -parent $parent \ - -initialfile Untitled -defaultextension ""] - if [string compare $file ""] { - - if [$CVEnv::tree exists $file] { - #set page [$CVEnv::tree itemcget $file -data] - set pos [lsearch $CVEnv::files $file] - set page [lindex $CVEnv::pages $pos] - $CVEnv::nbrig see $page - $CVEnv::nbrig raise $page - } else { - - set pos [lsearch $CVEnv::files $CVEnv::curfile] - set CVEnv::files [lreplace $CVEnv::files $pos $pos $file] - - set text [lindex [split $file /] end] - $CVEnv::nbrig itemconfigure $CVEnv::curpage -text $text - #set frame [ $CVEnv::nbrig getframe $CVEnv::curpage] - CVEnv::writefile $file $CVEnv::curframe - - if {$CVEnv::curfile != ""} { - set ind [$CVEnv::tree index $CVEnv::curfile] - $CVEnv::tree delete $CVEnv::curfile - $CVEnv::tree insert $ind files $file -text $file \ - -image [image create photo -file [file join $::image_path pictures/file.gif]] - } else { - $CVEnv::tree insert end files $file -text $file \ - -image [image create photo -file [file join $::image_path pictures/file.gif]] - } - - set CVEnv::curfile $file - } - } -} - -proc CVEnv::close {} { - - set pos [lsearch $CVEnv::files $CVEnv::curfile] - set $CVEnv::files [lreplace $CVEnv::files $pos $pos] - set $CVEnv::pages [lreplace $CVEnv::pages $pos $pos] - - $CVEnv::nbrig delete $CVEnv::curpage 1 - - if {$CVEnv::curfile != ""} { - set ind [$CVEnv::tree index $CVEnv::curfile] - $CVEnv::tree delete $CVEnv::curfile - } - - set CVEnv::pagesnum [expr $CVEnv::pagesnum - 1] - - if {$CVEnv::pagesnum == 0} { - CVEnv::longmenu 0 - CVEnv::longbar 0 - #CVEnv::longstbar 0 - set CVEnv::curfile "" - } else { - set page [$CVEnv::nbrig pages end] - - set pos [lsearch $CVEnv::pages $CVEnv::curpage] - set CVEnv::curfile [lindex $CVEnv::files $pos] - - $CVEnv::nbrig see $page - $CVEnv::nbrig raise $page - } -} - -proc CVEnv::execute {} { - - if {$CVEnv::savebefore == "1"} { - CVEnv::save - } else { - if {$CVEnv::curfile == ""} { - CVEnv::saveas . - } - } - - if {$CVEnv::clearoutputbefore == "1"} { - $CVEnv::outtx delete 0.0 end - } - - if {$CVEnv::clearerrorbefore == "1"} { - $CVEnv::parsetx delete 0.0 end - } - - pExecute $CVEnv::curfile -} - -proc CVEnv::create { } { - variable prgindic 0 - variable prgtext - ## Create intro - ################################################################### - set top [toplevel .intro -relief raised -borderwidth 2] - wm withdraw $top - wm overrideredirect $top 1 - - image create photo original -file [file join $::image_path pictures/CVEnv.gif] - canvas $top.c -bd 2 -relief ridge -width 295 -height 195 - $top.c create image 0 0 -anchor nw -image original - pack $top.c -side top -expand yes -fill x - - set frame [frame $top.f -background white -bd 2 -relief ridge] - set lab1 [label $frame.lab1 -text "Please wait for loading..." \ - -background white -font {times 8}] - set lab2 [label $frame.lab2 -textvariable CVEnv::prgtext \ - -background white -font {times 8} -width 35] - set prg [ProgressBar $frame.prg -width 50 -height 10 \ - -background white -variable CVEnv::prgindic -maximum 7] - pack $lab1 $prg $lab2 - pack $frame -side top -expand yes -fill x -padx 2 -pady 2 - - BWidget::place $top 0 0 center - wm deiconify $top - - ################################################################### - - set CVEnv::prgtext "Loading font..." - update - SelectFont::loadfont - - incr CVEnv::prgindic - set CVEnv::prgtext "Creating menu..." - update - - #### Menu - set menu { - "&File" all file 0 { - {command "&New" {} "New document" {} -command CVEnv::new} - {command "&Open" {} "Open a document" {} -command "CVEnv::open ."} - {command "&Close" {} "Close the document" {} -state disable \ - -command CVEnv::close} - {separator} - {command "&Save" {} "Save the document" {} -state disable \ - -command CVEnv::save} - {command "Save &As..." {} "Save the document as..." {} \ - -state disable -command "CVEnv::saveas ."} - {separator} - {command "E&xit" {} "Exit the program" {} -command exit} - } - "&View" all view 0 { - {checkbutton "&Toolbar" {all view} "Show/hide toolbar" {} \ - -variable CVEnv::showtb \ - -command {$CVEnv::mainf showtoolbar 0 $CVEnv::showtb} - } - {checkbutton "&Statusbar" {all view} "Show/hide statusbar" {} \ - -variable CVEnv::showstb \ - -command { - if {$CVEnv::showstb} { - pack $CVEnv::mainf.botf -side bottom -fill x - } else { - pack forget $CVEnv::mainf.botf - } - } - } - {checkbutton "&File pane" {all view} "" {} \ - -variable CVEnv::showlp \ - -command {CVEnv::leftpane $CVEnv::showlp} - } - - } - "&Options" all options 0 { - {command "&Configuration" {} "Enviroments settings" {} \ - -command CVEnv::confdialog} - {command "&Appearance" {} "Colors & fonts setup" {} -command CVEnv::colordialog} - } - "&Help" all help 0 { - {command "&About CVEnv" {} "Display the program info" {} \ - -command CVEnv::about} - } - } - - #{checkbutton "&Execute pane" {all view} "" {} \ - # -variable CVEnv::showbp \ - # -command {CVEnv::bottompane $CVEnv::showbp} - #} - - incr CVEnv::prgindic - set CVEnv::prgtext "Creating MainFrame..." - update - - set CVEnv::mainf [MainFrame .mainf -menu $menu \ - -textvariable CVEnv::statustext] - - menu .menubar.edit -tearoff 0 -background $::default_normal_bg - MainFrame::_create_entries .mainf .menubar.edit \ - $::default_normal_bg {\ - {command "Cu&t" {} "Cut the selection" {} -command cut} - {command "&Copy" {} "Copy the selection" {} -command copy} - {command "&Paste" {} "Paste the clipboard" {} -command paste} - {separator} - {command "&Go to.." {} "Move to a specified place" {} -command paste} - } - - incr CVEnv::prgindic - set CVEnv::prgtext "Creating toolbar..." - update - - #### toolbars creation - set CVEnv::tb [$CVEnv::mainf addtoolbar] - - set bbox [ButtonBox $CVEnv::tb.bbox0 -spacing 0 -padx 1 -pady 1] - $bbox add -image [image create photo -file [file join $::image_path pictures/new.gif]] \ - -highlightthickness 0 -takefocus 0 -relief link -borderwidth 2 \ - -padx 1 -pady 1 -helptext "Create a new file" -command CVEnv::new - $bbox add -image [image create photo -file [file join $::image_path pictures/open.gif]] \ - -highlightthickness 0 -takefocus 0 -relief link -borderwidth 2 \ - -padx 1 -pady 1 -helptext "Open an existing file" -command "CVEnv::open ." - pack $bbox -side left -anchor w - - set sep [Separator $CVEnv::tb.sep0 -orient vertical] - pack $sep -side left -fill y -padx 4 -anchor w - - set bbox [ButtonBox $CVEnv::tb.bbox1 -spacing 0 -padx 1 -pady 1] - $bbox add -image [image create photo -file [file join $::image_path pictures/save.gif]] \ - -highlightthickness 0 -takefocus 0 -relief link -borderwidth 2 \ - -padx 1 -pady 1 -helptext "Save file" -command CVEnv::save - - #$bbox.b2 configure -state active -relief link - #$bbox.b2 _leave - - set sep [Separator $CVEnv::tb.sep1 -orient vertical] - - set bbox [ButtonBox $CVEnv::tb.bbox2 -spacing 0 -padx 1 -pady 1] - $bbox add -image [image create photo -file [file join $::image_path pictures/cut.gif]] \ - -highlightthickness 0 -takefocus 0 -relief link -borderwidth 1 \ - -padx 1 -pady 1 -helptext "Cut (Ctrl-X)" - $bbox add -image [image create photo -file [file join $::image_path pictures/copy.gif]] \ - -highlightthickness 0 -takefocus 0 -relief link -borderwidth 1 \ - -padx 1 -pady 1 -helptext "Copy (Ctrl-C)" - $bbox add -image [image create photo -file [file join $::image_path pictures/paste.gif]] \ - -highlightthickness 0 -takefocus 0 -relief link -borderwidth 1 \ - -padx 1 -pady 1 -helptext "Paste (Ctrl-V)" - - set sep [Separator $CVEnv::tb.sep2 -orient vertical] - - set bbox [ButtonBox $CVEnv::tb.bbox3 -spacing 0 -padx 1 -pady 1] - $bbox add -image [image create photo -file [file join $::image_path pictures/exec.gif]] \ - -highlightthickness 0 -takefocus 0 -relief link -borderwidth 1 \ - -padx 1 -pady 1 -helptext "Execute the script (F5)" \ - -command CVEnv::execute - - $bbox add -image [image create photo -file [file join $::image_path pictures/stop.gif]] \ - -highlightthickness 0 -takefocus 0 -relief link -borderwidth 1 \ - -padx 1 -pady 1 -helptext "Stop the execution (Shift-F5)"\ - -command pStop - - set sep [Separator $CVEnv::tb.sep3 -orient vertical] - - $CVEnv::tb.bbox3.b1 configure -state disable -relief link - - incr CVEnv::prgindic - set CVEnv::prgtext "Creating statusbar..." - update - - $CVEnv::mainf addindicator - $CVEnv::mainf.status.indf.f0 configure -relief flat - - label $CVEnv::mainf.status.indf.f0.l0 -relief sunken -borderwidth 1 \ - -takefocus 0 -highlightthickness 0 -textvariable CVEnv::curfile - pack $CVEnv::mainf.status.indf.f0.l0 -side left -fill y -expand 1 - - label $CVEnv::mainf.status.indf.f0.l1 -relief flat -borderwidth 1 \ - -takefocus 0 -highlightthickness 0 -text "Ln" - pack $CVEnv::mainf.status.indf.f0.l1 -side left -fill y -expand 1 - - label $CVEnv::mainf.status.indf.f0.l2 -relief sunken -borderwidth 1 \ - -takefocus 0 -highlightthickness 0 -textvariable CVEnv::curln - pack $CVEnv::mainf.status.indf.f0.l2 -side left -fill y -expand 1 - - label $CVEnv::mainf.status.indf.f0.l3 -relief flat -borderwidth 1 \ - -takefocus 0 -highlightthickness 0 -text "Col" - pack $CVEnv::mainf.status.indf.f0.l3 -side left -fill y -expand 1 - - label $CVEnv::mainf.status.indf.f0.l4 -relief sunken -borderwidth 1 \ - -takefocus 0 -highlightthickness 0 -textvariable CVEnv::curcol - pack $CVEnv::mainf.status.indf.f0.l4 -side left -fill y -expand 1 - pack forget $CVEnv::mainf.status.indf.f0 - - set CVEnv::prgtext "Creating panes..." - incr CVEnv::prgindic - CVEnv::createpanes $CVEnv::mainf.frame - - set CVEnv::prgtext "Done" - incr CVEnv::prgindic - - pack $CVEnv::mainf -fill both -expand yes - update idletasks - - unset CVEnv::prgindic - unset CVEnv::prgtext - - destroy .intro -} - -proc CVEnv::treeclick {node} { - set file [lindex $node 0] - set data [$CVEnv::tree itemcget $file -data] - - if [string compare $data "Files"] { - set pos [lsearch $CVEnv::files $file] - set page [lindex $CVEnv::pages $pos] - - $CVEnv::nbrig see $page - $CVEnv::nbrig raise $page - } -} - -proc CVEnv::gotoline { line } { - $CVEnv::curframe see $line.0 - focus -force $CVEnv::curframe - - $CVEnv::curframe tag remove sel 0.0 $line.0 - $CVEnv::curframe tag add sel $line.0 [expr $line +1].0 - $CVEnv::curframe tag remove sel [expr $line +1].0 end - update idletasks -} - -proc CVEnv::createpanes { parent } { - set CVEnv::pw [PanedWindow $parent.pw -side left] - set CVEnv::ptop [$CVEnv::pw add] - - set CVEnv::pwch [PanedWindow $CVEnv::ptop.pw -side bottom] - set plef [$CVEnv::pwch add] - set CVEnv::prig [$CVEnv::pwch add] - - set CVEnv::nblef [NoteBook $plef.nb -side bottom] - set files [$CVEnv::nblef insert end "files" -text "Files" \ - -image [image create photo -file [file join $::image_path pictures/file.gif]]] - set sw [ScrolledWindow $files.sw \ - -relief sunken -borderwidth 2] - set CVEnv::tree [Tree $sw.tree \ - -relief flat -borderwidth 0 -width 15 -highlightthickness 0\ - -redraw 1] - $sw setwidget $CVEnv::tree - $CVEnv::tree insert end root files -text Files -data Files \ - -image [image create photo -file [file join $::image_path pictures/openfold.gif]] - pack $sw -side top -expand yes -fill both - #$CVEnv::nblef compute_size - pack $CVEnv::nblef -fill both -expand yes -padx 1 -pady 1 - - set CVEnv::nbrig [NoteBook $CVEnv::ptop.nb -side top] - - #$CVEnv::nbrig compute_size - pack $CVEnv::nbrig -in $CVEnv::prig -fill both -expand yes -padx 1 -pady 1 - pack $CVEnv::pwch -fill both -expand yes - - set CVEnv::pbot [$CVEnv::pw add] - set CVEnv::inputcb [Entry $CVEnv::pbot.combo \ - -textvariable CVEnv::inputvar \ - -helptext "Input box. In order to input data press Enter."\ - -command { - set CVEnv::inputdata $CVEnv::inputvar - lappend CVEnv::inputlist $CVEnv::inputdata - set CVEnv::curinput [lsearch -exact $CVEnv::inputlist $CVEnv::inputdata] - $CVEnv::inputcb configure -fg #00FFFF - pInput - } ] - pack $CVEnv::inputcb -fill x -side bottom - - bind $CVEnv::inputcb { - set CVEnv::inputdata "" - $CVEnv::inputcb configure \ - -fg $::default_window_fg - } - bind $CVEnv::inputcb { - if {$CVEnv::curinput != 0} { - set CVEnv::curinput [expr $CVEnv::curinput -1] - set CVEnv::inputvar [lindex $CVEnv::inputlist $CVEnv::curinput] - set CVEnv::inputdata $CVEnv::inputvar - $CVEnv::inputcb configure \ - -fg #00FFFF - } - } - bind $CVEnv::inputcb { - incr CVEnv::curinput - set CVEnv::inputvar [lindex $CVEnv::inputlist $CVEnv::curinput] - set CVEnv::inputdata $CVEnv::inputvar - $CVEnv::inputcb configure \ - -fg #00FFFF - } - - - set CVEnv::nbbot [NoteBook $CVEnv::pbot.nb -side bottom] - - set parse [$CVEnv::nbbot insert end parse -text "Errors"] - set sw [ScrolledWindow $parse.sw -auto vertical] - set CVEnv::parsetx [text $sw.tx -wrap none] - $sw setwidget $CVEnv::parsetx - pack $CVEnv::parsetx -fill both -expand yes - pack $sw -side top -expand yes -fill both - - bind $CVEnv::parsetx { - set pos [$CVEnv::parsetx index @%x,%y] - set listpos [split $pos "."] - set line [lindex $listpos 0] - - set data [$CVEnv::parsetx get "insert linestart" "insert lineend"] - set datalist [split $data " "] - set file [lindex $datalist 2] - set line [lindex [split [lindex $datalist 5] ":"] 0] - - if [string compare $file ""] { - set pos [lsearch -exact $CVEnv::files $file] - set page [lindex $CVEnv::pages $pos] - if [string compare $page ""] { - $CVEnv::nbrig see $page - $CVEnv::nbrig raise $page - CVEnv::gotoline $line - } - } - } - bind $CVEnv::parsetx { - set pos [$CVEnv::parsetx index @%x,%y] - set listpos [split $pos "."] - set line [lindex $listpos 0] - - set data [$CVEnv::parsetx get "insert linestart" "insert lineend"] - set datalist [split $data " "] - set file [lindex $datalist 2] - set line [lindex [split [lindex $datalist 5] ":"] 0] - - if [string compare $file ""] { - set pos [lsearch -exact $CVEnv::files $file] - set page [lindex $CVEnv::pages $pos] - if [string compare $page ""] { - $CVEnv::nbrig see $page - $CVEnv::nbrig raise $page - CVEnv::gotoline $line - } - } - } - - set output [$CVEnv::nbbot insert end output -text "Output"] - set sw [ScrolledWindow $output.sw -auto vertical] - set CVEnv::outtx [text $sw.tx -wrap none] - $sw setwidget $CVEnv::outtx - pack $CVEnv::outtx -fill both -expand yes - pack $sw -side top -expand yes -fill both - - bind $CVEnv::outtx {$CVEnv::outtx configure -state disable} - bind $CVEnv::outtx {$CVEnv::outtx configure -state normal} - bind $CVEnv::outtx {$CVEnv::outtx configure -state normal} - bind $CVEnv::parsetx {$CVEnv::parsetx configure -state disable} - bind $CVEnv::parsetx {$CVEnv::parsetx configure -state normal} - bind $CVEnv::parsetx {$CVEnv::parsetx configure -state normal} - - #$CVEnv::nbbot compute_size - pack $CVEnv::nbbot -fill both -expand yes -padx 1 -pady 1 -side top - - $CVEnv::tree bindText "CVEnv::treeclick" - #Tree::bindImage $path "$path selection set" - - - pack $CVEnv::pw -fill both -expand yes -} - -proc CVEnv::update_font { newfont } { - variable _wfont - variable notebook - variable font - variable font_name - - . configure -cursor watch - if { $font != $newfont } { - $_wfont configure -font $newfont - $notebook configure -font $newfont - set font $newfont - } - . configure -cursor "" -} - -proc main {} { - package require BWidget - #option add *TitleFrame.l.font {helvetica 11 bold italic} - wm withdraw . - wm title . "CVEnv" - - CVEnv::create - - BWidget::place . 640 480 center - wm deiconify . - raise . - wm geometry . 640x480 - - set y0 [winfo y .] - set x0 [winfo x .] - set ypw [expr $y0 + 360] - set xpw [expr $x0 + 130] - - update - PanedWindow::_end_move_sash $CVEnv::pw $CVEnv::pw.sash \ - 1 0 0x0FFFFFFF $ypw rooty height - PanedWindow::_end_move_sash $CVEnv::pwch $CVEnv::pwch.sash \ - 1 0 0x0FFFFFFF $xpw rootx width - - $CVEnv::nblef raise [$CVEnv::nblef page 0] - $CVEnv::nbbot raise [$CVEnv::nbbot page 1] - - update - - focus -force . -} - -main