home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / copyenvdia.tcl < prev    next >
Text File  |  1997-09-22  |  4KB  |  144 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Westmount Technology    1994
  4. #
  5. #      File:           @(#)copyenvdia.tcl    /main/titanic/3
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)copyenvdia.tcl    /main/titanic/3   22 Sep 1997 Copyright 1994 Westmount Technology
  10.  
  11. # Start user added include file section
  12. require procs.tcl
  13. # End user added include file section
  14.  
  15. require "m4envdialo.tcl"
  16.  
  17. Class CopyEnvDialog : {M4EnvDialog} {
  18.     constructor
  19.     method destructor
  20.     method popUp
  21.     method save
  22.     attribute levelObj
  23. }
  24.  
  25. constructor CopyEnvDialog {class this name NrOfColumns levelObj} {
  26.     set this [M4EnvDialog::constructor $class $this $name $NrOfColumns]
  27.     $this levelObj $levelObj
  28.     # Start constructor user section
  29.  
  30.     set level [$levelObj uiClass]
  31.     set labelText "Copy To $level Environment As ReadOnly Variable"
  32.     $this setLabelText "$labelText"
  33.  
  34.     # End constructor user section
  35.     return $this
  36. }
  37.  
  38. method CopyEnvDialog::destructor {this} {
  39.     # Start destructor user section
  40.     # End destructor user section
  41.     $this M4EnvDialog::destructor
  42. }
  43.  
  44. method CopyEnvDialog::popUp {this} {
  45.     set m4VarDes [$this m4VarDes]
  46.     m4_var foreach m4var [m4_var meta4UserEnv] {
  47.     if [isCommand $m4VarDes] {
  48.         set label [rmWhiteSpace [$m4VarDes getUiName $m4var]]
  49.         if {"$label" == ""} {
  50.         set label $m4var
  51.         }
  52.     } else {
  53.         set label $m4var
  54.     }
  55.     set m4SortList($label) $m4var
  56.     }
  57.  
  58.     if [info exists m4SortList] {
  59.     set col 0
  60.     foreach index [lsort [array names m4SortList]] {
  61.         set m4var $m4SortList($index)
  62.         $this addToggle $m4var $col $m4var
  63.         incr col 1
  64.         if {! [isCommand $this.top.vp.row.col$col]} {
  65.         set col 0
  66.         }
  67.     }
  68.     }
  69.  
  70.     $this TemplateDialog::popUp
  71. }
  72.  
  73. method CopyEnvDialog::save {this} {
  74.     busy {
  75.     set tmpFile [args_file {}]
  76.     if [[$this levelObj] isA Corporate] {
  77.         set m4etcDir [path_name concat [m4_var get M4_home] etc]
  78.         set m4envFile [path_name concat $m4etcDir m4env m4env]
  79.         if {! [BasicFS::exists $m4envFile]} {
  80.         BasicFS::makeFile $m4envFile
  81.         }
  82.         copy_text_file $m4envFile $tmpFile
  83.     } else {
  84.         set m4envFile [[$this levelObj] findCustomFileVersion m4env m4env]
  85.         if [$m4envFile isNil] {
  86.         set m4envFile \
  87.             [[$this levelObj] createCustomFileVersion m4env m4env]
  88.         }
  89.         $m4envFile downLoad $tmpFile
  90.         $m4envFile edit
  91.     }
  92.  
  93.     # Read the old m4env file
  94.     set fid [open $tmpFile r]
  95.     set contents [read -nonewline $fid]
  96.     close $fid
  97.  
  98.     # Write the new m4env file
  99.     set fid [open $tmpFile w]
  100.     set i 0
  101.     [$this buttonSet] foreach toggle {
  102.         set m4var [lindex [$this m4varList] $i]
  103.         if {[$toggle state]} {
  104.         $toggle state no
  105.         puts $fid "${m4var}=[m4_var get $m4var];RO"
  106.  
  107.         # Remove old specifications of the variable
  108.         # from the contents
  109.         set newContents ""
  110.         set nl ""
  111.         foreach line [split $contents "\n"] {
  112.             set assign [string first "=" $line]
  113.             if {$assign > 0} {
  114.             set var [string range $line 0 [expr $assign -1]]
  115.             } else {
  116.             set var ""
  117.             }
  118.             if {"$var" != "$m4var"} {
  119.             append newContents "$nl$line"
  120.             set nl "\n"
  121.             }
  122.         }
  123.         set contents $newContents
  124.         }
  125.         incr i 1
  126.     }
  127.     foreach line [split $contents "\n"] {
  128.         puts $fid $line
  129.     }
  130.     close $fid
  131.  
  132.     if [[$this levelObj] isA Corporate] {
  133.         copy_text_file $tmpFile $m4envFile
  134.     } else {
  135.         $m4envFile upLoad $tmpFile
  136.         $m4envFile quit
  137.     }
  138.     unlink $tmpFile
  139.     }
  140. }
  141.  
  142. # Do not delete this line -- regeneration end marker
  143.  
  144.