home *** CD-ROM | disk | FTP | other *** search
/ PC World 1997 November / PCWorld_1997-11_cd.bin / software / programy / komix / DATA.Z / custcheckd.tcl < prev    next >
Text File  |  1996-11-12  |  8KB  |  267 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cadre Technologies Inc.    1996
  4. #
  5. #      File:           @(#)custcheckd.tcl    /main/hindenburg/1
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)custcheckd.tcl    /main/hindenburg/1   12 Nov 1996 Copyright 1996 Cadre Technologies Inc.
  10.  
  11. # Start user added include file section
  12. require custcheckp.tcl
  13. require checkbrvie.tcl
  14. require config.tcl
  15. # End user added include file section
  16.  
  17.  
  18. Class CustCheckDialog : {NoteBkDialog} {
  19.     constructor
  20.     method destructor
  21.     method createInterface
  22.     method read
  23.     method edit
  24.     method show
  25.     method save
  26.     method quit
  27.     method getGroup
  28.     method setGroup
  29.     method removeGroup
  30.     method getPhase
  31.     method setPhase
  32.     method removePhase
  33.     attribute lvlObj
  34.     attribute custObj
  35.     attribute readOnly
  36.     attribute number
  37.     attribute group
  38.     attribute phase
  39. }
  40.  
  41. constructor CustCheckDialog {class this name} {
  42.     set this [NoteBkDialog::constructor $class $this $name]
  43.     $this group [Dictionary new]
  44.     $this phase [Dictionary new]
  45.     # Start constructor user section
  46.     .main busy TRUE
  47.     global classCount
  48.     $this number $classCount
  49.  
  50.     # read phases file
  51.     getPhases
  52.  
  53.     $this modal 1
  54.     $this createInterface
  55.     $this config \
  56.         -cancelPressed { %this quit } \
  57.         -okPressed { %this save ; %this quit} \
  58.         -helpPressed {.main helpOnName checkConfigDialog } \
  59.         -applyNowPressed { %this save }
  60.     # End constructor user section
  61.     return $this
  62. }
  63.  
  64. method CustCheckDialog::destructor {this} {
  65.     # Start destructor user section
  66.     # End destructor user section
  67. }
  68.  
  69. method CustCheckDialog::createInterface {this} {
  70.  
  71.     set cc [ClientContext::global]
  72.     set currentPhase ""
  73.     if {![[$cc currentPhase] isNil]} {
  74.         set currentPhase [[[$cc currentPhase] phase] type]
  75.     }
  76.     set count 0
  77.     foreach phase ${BrowserProcs::phases} {
  78.         set phaseType [lindex $phase 1]
  79.         if {$currentPhase != "" && $currentPhase != $phaseType} continue
  80.         if [[$this phase] exists "$phaseType"] continue
  81.         set page [CustCheckPage new $this.phase$count \
  82.             -label "$phaseType" \
  83.         ]
  84.         $this setPhase "$phaseType" $page
  85.         incr count 1
  86.     }
  87. }
  88.  
  89. method CustCheckDialog::read {this levelObject} {
  90.  
  91.     $this lvlObj $levelObject
  92.  
  93.     if {"$levelObject" == "" || [$levelObject isA Corporate]} {
  94.         $this custObj ""
  95.     } else {
  96.         $this custObj \
  97.             [$levelObject findCustomFileVersion checkconfig ""]
  98.     }
  99.  
  100.     set clientContext [ClientContext::global]
  101.     set config [args_file {}]
  102.     $clientContext downLoadCustomFile checkconfig "" etc $config
  103.     set groups [args_file {}]
  104.     $clientContext downLoadCustomFile checkgroups "" etc $groups
  105.     set maps [args_file {}]
  106.     $clientContext downLoadCustomFile checkmap "" etc $maps
  107.  
  108.     set groupList [readConfigurationFile $groups]
  109.     unlink $groups
  110.  
  111.     foreach groupLine $groupList {
  112.         set groupArray([lindex $groupLine 0]) [lindex $groupLine 1]
  113.     }
  114.  
  115.     set mapList [readConfigurationFile $maps]
  116.     unlink $maps
  117.  
  118.     foreach mapLine $mapList {
  119.         set msgNr [lindex $mapLine 1]
  120.         set msgInfo [list $msgNr "[m4_msg get $msgNr]"]
  121.         if {[$this getGroup [lindex $mapLine 0]] != ""} {
  122.             set lst [$this getGroup [lindex $mapLine 0]]
  123.             lappend lst "$msgInfo"
  124.         } else {
  125.             set lst [list "$msgInfo"]
  126.         }
  127.         $this setGroup [lindex $mapLine 0] $lst
  128.     }
  129.  
  130.     set configList [readConfigurationFile $config]
  131.     unlink $config
  132.  
  133.     foreach configLine $configList {
  134.         set phase [lindex $configLine 0]
  135.         set group [lindex $configLine 1]
  136.         set checkValue [lindex $configLine 2]
  137.         set page [$this getPhase $phase]
  138.         if {$page == ""} continue
  139.         CheckBrObject new $page.DC.CBV.$group
  140.         $page.DC.CBV.$group selected "$page.DC.CBV setMessages $group"
  141.         $page.DC.CBV.$group group $group
  142.         $page.DC.CBV.$group label $group
  143.         if [info exists groupArray($group)] {
  144.             set grpDesc "$groupArray($group)"
  145.             $page.DC.CBV.$group details "$checkValue \"$grpDesc\""
  146.         } else {
  147.             $page.DC.CBV.$group details "$checkValue"
  148.         }
  149.     }
  150.  
  151.     [$this phase] foreach key value {
  152.         $value.DC.CBV sortit
  153.     }
  154. }
  155.  
  156. method CustCheckDialog::edit {this levelObject} {
  157.  
  158.     $this read $levelObject
  159.     $this readOnly 0
  160.  
  161.     if {"[$this custObj]" != ""} {
  162.         if [catch {[$this custObj] edit} msg] {
  163.             wmtkerror $msg
  164.             $this readOnly 1
  165.         }
  166.     }
  167.  
  168.     if [$this readOnly] {
  169.         $this title "Show 'checkconfig'"
  170.     } else {
  171.         $this title "Edit 'checkconfig'"
  172.     }
  173.  
  174.     $this popUp
  175.     .main busy FALSE
  176. }
  177.  
  178. method CustCheckDialog::show {this levelObject} {
  179.  
  180.     $this read $levelObject
  181.     $this readOnly 1
  182.     $this title "Show 'checkconfig'"
  183.  
  184.     $this popUp
  185.     .main busy FALSE
  186. }
  187.  
  188. method CustCheckDialog::save {this} {
  189.  
  190.     if [$this readOnly] {
  191.         return
  192.     }
  193.  
  194.     set tmpFile [args_file {}]
  195.     set fid [open $tmpFile w]
  196.  
  197.     puts $fid "#-------------------------------------------------------------"
  198.     puts $fid "#                                                               "
  199.     puts $fid "# phase id   : The id of the phase. Valid id's are:           "
  200.     puts $fid "#              'Analysis', 'SystemDesign', 'ObjectDesign'     "
  201.     puts $fid "#              and 'Implementation'                           "
  202.     puts $fid "# group name : The name of the group of checks. With this name"
  203.     puts $fid "#              you can define in the configuration file       "
  204.     puts $fid "#              'checkmap' which errors/warnings belong to this"
  205.     puts $fid "#              group. The name of the group is userdefineable."
  206.     puts $fid "# value      : Valid values are: 'off', 'default', 'error'    "
  207.     puts $fid "#              and 'warning' With this field you can promote  "
  208.     puts $fid "#              warnings to errors and visa versa.             "
  209.     puts $fid "#              You cannot turn off fatals or normal messages! "
  210.     puts $fid "#                                                             "
  211.     puts $fid "#              The key in this table is the phase id combined "
  212.     puts $fid "#              with the group name                            "
  213.     puts $fid "#-------------------------------------------------------------"
  214.     puts $fid "# phase id      | group name                | value           "
  215.     puts $fid "#-------------------------------------------------------------"
  216.  
  217.     set formatString "%-15.15s | %-25.25s | %-10.10s"
  218.  
  219.     [$this phase] foreach key value {
  220.         foreach obj [$value.DC.CBV objectSet] {
  221.             puts $fid "[format $formatString $key \
  222.                 [$obj label] [lindex [$obj details] 0]]"
  223.         }
  224.     }
  225.     close $fid
  226.     require "custfileut.tcl"
  227.     CustFileUtilities::save $tmpFile [$this lvlObj] checkconfig ""
  228.     unlink $tmpFile
  229.  
  230. }
  231.  
  232. method CustCheckDialog::quit {this} {
  233.  
  234.     if {"[$this custObj]" != "" && (! [$this readOnly])} {
  235.         [$this custObj] quit
  236.     }
  237.  
  238.     $this delete
  239. }
  240.  
  241. # Do not delete this line -- regeneration end marker
  242.  
  243. method CustCheckDialog::getGroup {this groupName} {
  244.     return [[$this group] set $groupName]
  245. }
  246.  
  247. method CustCheckDialog::setGroup {this groupName newGroup} {
  248.     [$this group] set $groupName $newGroup
  249. }
  250.  
  251. method CustCheckDialog::removeGroup {this groupName} {
  252.     [$this group] unset $groupName
  253. }
  254.  
  255. method CustCheckDialog::getPhase {this phaseType} {
  256.     return [[$this phase] set $phaseType]
  257. }
  258.  
  259. method CustCheckDialog::setPhase {this phaseType newPhase} {
  260.     [$this phase] set $phaseType $newPhase
  261. }
  262.  
  263. method CustCheckDialog::removePhase {this phaseType} {
  264.     [$this phase] unset $phaseType
  265. }
  266.  
  267.