home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 December / PCWorld_2000-12_cd.bin / Komunikace / Comanche / plugins / apache / setup / apacheInstallConfig.tcl next >
Text File  |  2000-11-02  |  4KB  |  151 lines

  1.  
  2. class ::apacheInstallConfig {
  3.     variable xuiDoc
  4.     variable configFile
  5.     variable guiB
  6.     variable dialog
  7.     constructor { propertyPages confFile } {
  8.     set f [open $propertyPages]
  9.     set xuiDoc [::xuiB renderDocument [::dom::DOMImplementation \
  10.         parse [read $f]]]
  11.     close $f
  12.     set configFile $confFile
  13.     set guiB [guiBuilder ::#auto]
  14.     set dialog [ apacheInstallDialog ::#auto $guiB ]
  15.     }
  16.     method configure {  }
  17.     method save
  18.     method load {  }
  19.     method clear
  20. }
  21.  
  22. body apacheInstallConfig::configure { } {
  23.     $this load
  24.     set exitCode [$dialog show $xuiDoc]
  25.     switch $exitCode {
  26.     OK {
  27.         $this save
  28.     }
  29.     CANCEL {
  30.         # todo: show warning saying that if no Apache installation is specified, 
  31.         # it will (surprise) not be possible to configura Apache
  32.     }
  33.     }
  34.  
  35.    # load
  36.    
  37.    # Create top level
  38.    
  39.    
  40.    
  41.    # Show gui
  42.    # When done, save results if OK
  43. }
  44.  
  45. body apacheInstallConfig::clear {} {
  46.  
  47. }
  48.  
  49. # TO-DO: clean up all this mess. It may be eaier to use the same XML 
  50. # format in file and in the xui and just do copyClone
  51.  
  52. body apacheInstallConfig::load {} {
  53.     $this clear
  54.     if [file exists $configFile] {
  55.         set f [open $configFile]
  56.     set apacheConf [::dom::DOMImplementation parse [read $f]]
  57.     close $f
  58.     } else {
  59.     return
  60.     }
  61.     set servers [::dom::getElements [dom::getElements $apacheConf]]
  62.     foreach serverElement $servers {
  63.     set xuiServer [$xuiDoc newChild]
  64.     set serverDescription [::dom::getAttribute $serverElement name]
  65.     [$xuiServer getComponentByName comment] setValue $serverDescription
  66.     set commandList [$xuiServer getComponentByName commands]
  67.     $commandList clear
  68.         foreach infoElement [::dom::getElements $serverElement] {
  69.         switch [::dom::getTagName $infoElement] {
  70.         command {
  71.             set newCommand [$commandList newChild] 
  72.             [$newCommand getComponentByName name] setValue \
  73.                 [::dom::getAttribute $infoElement name] 
  74.             [$newCommand getComponentByName command] setValue \
  75.                 [::dom::getText $infoElement]
  76.             [$newCommand getComponentByName icon] setValue \
  77.                 [::dom::getAttribute $infoElement icon]
  78.             $commandList insertChild $newCommand
  79.         } httpd {
  80.             set httpd [::dom::getText $infoElement]
  81.             [$xuiServer getComponentByName httpd] \
  82.                 setValue $httpd
  83.         } configurationFiles {
  84.             set configurationFiles [::dom::getText $infoElement]
  85.             [$xuiServer getComponentByName httpdconf] \
  86.                 setValue $configurationFiles
  87.         } serverRoot {
  88.             set serverRoot [::dom::getText $infoElement]
  89.             [$xuiServer getComponentByName serverroot] \
  90.                 setValue $serverRoot
  91.         }
  92.         }
  93.     }
  94.     $xuiDoc insertChild $xuiServer
  95.     }
  96. }
  97.     
  98.     
  99. # XXX change this mess to do it with the DOM API
  100.  
  101. body apacheInstallConfig::save {} {
  102.  
  103.     # This is so if in the first time they pressed cancel no config file
  104.     # is created, so next time it will get asked for configuration again
  105.  
  106.     if ![llength [$xuiDoc getChildren]] {
  107.         file delete $configFile
  108.     return
  109.     }
  110.     set f [open $configFile w]
  111.     puts $f "<apacheModuleConf>"
  112.     foreach xuiServer [$xuiDoc getChildren] {
  113.         puts -nonewline $f "<server name=\""
  114.     puts -nonewline $f [[$xuiServer getComponentByName comment] getValue]
  115.     puts $f "\">"
  116.     puts -nonewline $f "<httpd>"
  117.     puts -nonewline $f [[$xuiServer getComponentByName httpd] getValue]
  118.     puts $f "</httpd>"
  119.     puts -nonewline $f "<configurationFiles>"
  120.     puts -nonewline $f [[$xuiServer getComponentByName httpdconf] getValue]
  121.     puts $f "</configurationFiles>"
  122.     puts -nonewline $f "<serverRoot>"
  123.     puts -nonewline $f [[$xuiServer getComponentByName serverroot] getValue]
  124.     puts $f "</serverRoot>"
  125.     set commandList [$xuiServer getComponentByName commands]
  126.         foreach command [$commandList getChildren] {
  127.             puts -nonewline $f "<command name=\""
  128.         puts -nonewline $f \
  129.             [[$command getComponentByName name] getValue]
  130.         puts -nonewline $f "\" icon=\""
  131.         puts -nonewline $f \
  132.             [[$command getComponentByName icon] getValue]
  133.         puts -nonewline $f "\">"
  134.         puts -nonewline $f \
  135.             [[$command getComponentByName command] getValue]
  136.         puts $f "</command>"    
  137.     }
  138.     puts $f "</server>"
  139.     }
  140.     puts $f "</apacheModuleConf>"
  141.     close $f
  142. }
  143.     
  144.     
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.