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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1996
  4. #
  5. #      File:           @(#)brenablepa.tcl    /main/hindenburg/5
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)brenablepa.tcl    /main/hindenburg/5   8 Nov 1996 Copyright 1996 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. # End user added include file section
  13.  
  14. require "cobrenable.tcl"
  15.  
  16. Class BrEnablePage : {CoBrEnablePage} {
  17.     constructor
  18.     method destructor
  19.     method addRepType
  20.     method removeRepType
  21.     method addBrowserType
  22.     method removeBrowserType
  23.     method createInterface
  24.     method clearInterface
  25.     method fromInterface
  26.     method toInterface
  27.     method makeListUnique
  28.     method getBrowserTypes
  29. }
  30.  
  31. constructor BrEnablePage {class this name} {
  32.     set this [CoBrEnablePage::constructor $class $this $name]
  33.     # Start constructor user section
  34.     # End constructor user section
  35.     return $this
  36. }
  37.  
  38. method BrEnablePage::destructor {this} {
  39.     # Start destructor user section
  40.     # End destructor user section
  41.     $this CoBrEnablePage::destructor
  42. }
  43.  
  44. method BrEnablePage::addRepType {this} {
  45.  
  46.         set newSelected [[$this if].classTL selectedSet]
  47.  
  48.     # add the selected repTypes to the selected textlist
  49.     set orgEntrySet [[$this if].selClassTL entrySet]
  50.     set newEntrySet [lsort [concat $orgEntrySet $newSelected]]
  51.     [$this if].selClassTL entrySet $newEntrySet
  52.  
  53.     [[$this noteBkDialog] cPage] setMethods $newEntrySet
  54.  
  55.     # remove the selected repTypes from the TextList
  56.     set newEntrySet ""
  57.     foreach entry [[$this if].classTL entrySet] {
  58.         if {[lsearch -exact $newSelected $entry] == -1} {
  59.             lappend newEntrySet $entry
  60.         }
  61.     }
  62.     [$this if].classTL entrySet $newEntrySet
  63.  
  64.     set newEntrySet [$this getBrowserTypes [[$this if].selClassTL entrySet]]
  65.     
  66.     # remove the already selected possible browserTypes
  67.     set newStrippedEntrySet ""
  68.     set alreadySelectedSet [[$this if].selFileTL entrySet]
  69.     foreach entry $newEntrySet {
  70.         if {[lsearch -exact $alreadySelectedSet $entry] == -1} {
  71.             lappend newStrippedEntrySet $entry
  72.         }
  73.     }
  74.  
  75.     [$this if].fileTL entrySet $newStrippedEntrySet
  76. }
  77.  
  78. method BrEnablePage::removeRepType {this} {
  79.  
  80.         set newSelected [[$this if].selClassTL selectedSet]
  81.  
  82.     # add the selected repTypes to the textlist
  83.     set orgEntrySet [[$this if].classTL entrySet]
  84.     set newEntrySet [lsort [concat $orgEntrySet $newSelected]]
  85.     [$this if].classTL entrySet [$this makeListUnique $newEntrySet]
  86.  
  87.     # remove the selected repTypes from the selected textlist
  88.     set newEntrySet ""
  89.     foreach entry [[$this if].selClassTL entrySet] {
  90.         if {[lsearch -exact $newSelected $entry] == -1} {
  91.             lappend newEntrySet $entry
  92.         }
  93.     }
  94.     [$this if].selClassTL entrySet $newEntrySet
  95.     [$this if].selClassTL selectedSet ""
  96.  
  97.     set newEntrySet [$this getBrowserTypes [[$this if].selClassTL entrySet]]
  98.  
  99.     # remove the possible browserTypes that are no longer valid
  100.     set newStrippedEntrySet ""
  101.     set entrySet [[$this if].fileTL entrySet]
  102.     foreach entry $entrySet {
  103.         if {[lsearch -exact $newEntrySet $entry] != -1} {
  104.             lappend newStrippedEntrySet $entry
  105.         }
  106.     }
  107.     [$this if].fileTL entrySet $newStrippedEntrySet
  108.     
  109.     # remove the selected browserTypes that are no longer valid
  110.     set newStrippedEntrySet ""
  111.     set alreadySelectedSet [[$this if].selFileTL entrySet]
  112.     foreach entry $alreadySelectedSet {
  113.         if {[lsearch -exact $newEntrySet $entry] != -1} {
  114.             lappend newStrippedEntrySet $entry
  115.         }
  116.     }
  117.     [$this if].selFileTL entrySet $newStrippedEntrySet
  118.  
  119.     [[$this noteBkDialog] cPage] setMethods $newStrippedEntrySet
  120. }
  121.  
  122. method BrEnablePage::addBrowserType {this} {
  123.     
  124.         set newSelected [[$this if].fileTL selectedSet]
  125.  
  126.     # add the selected fileTypes to the selected textlist
  127.     set orgEntrySet [[$this if].selFileTL entrySet]
  128.     set newEntrySet [lsort [concat $orgEntrySet $newSelected]]
  129.     set newEntrySet [$this makeListUnique $newEntrySet]
  130.  
  131.     [$this if].selFileTL entrySet $newEntrySet
  132.     [$this if].selFileTL selectedSet ""
  133.  
  134.     # remove the selected fileTypes from the TextList
  135.     set newEntrySet ""
  136.     foreach entry [[$this if].fileTL entrySet] {
  137.         if {[lsearch -exact $newSelected $entry] == -1} {
  138.             lappend newEntrySet $entry
  139.         }
  140.     }
  141.     [$this if].fileTL entrySet $newEntrySet
  142. }
  143.  
  144. method BrEnablePage::removeBrowserType {this} {
  145.     
  146.         set newSelected [[$this if].selFileTL selectedSet]
  147.  
  148.     # add the selected fileTypes to the textlist
  149.     set orgEntrySet [[$this if].fileTL entrySet]
  150.     set newEntrySet [lsort [concat $orgEntrySet $newSelected]]
  151.     set newEntrySet [$this makeListUnique $newEntrySet]
  152.     [$this if].fileTL entrySet $newEntrySet
  153.  
  154.     # remove the selected fileTypes from the selected textlist
  155.     set newEntrySet ""
  156.     foreach entry [[$this if].selFileTL entrySet] {
  157.         if {[lsearch -exact $newSelected $entry] == -1} {
  158.             lappend newEntrySet $entry
  159.         }
  160.     }
  161.     [$this if].selFileTL entrySet $newEntrySet
  162.     [$this if].selFileTL selectedSet ""
  163. }
  164.  
  165. method BrEnablePage::createInterface {this} {
  166.  
  167.     # create "enable/disable" page
  168.     interface DlgRow $this.NG {
  169.         DlgColumn DC {
  170.             DlgRow DR {
  171.                 DlgColumn DC {
  172.                     Label L {
  173.                         text "disabled for classes"
  174.                     }
  175.                     TextList classTL { 
  176.                         selectionPolicy MULTIPLE
  177.                         rowCount 6
  178.                     }
  179.                     Label L {
  180.                         text "disabled for browser types"
  181.                     }
  182.                     TextList fileTL { 
  183.                         selectionPolicy MULTIPLE
  184.                         rowCount 6
  185.                     }
  186.                 }
  187.                 DlgColumn DC {
  188.                     Label dummyLayoutLabel {}
  189.                     Label dummyLayoutLabel {}
  190.                     horStretchFactor 0
  191.                     horShrinkFactor 0
  192.                     PushButton addRepPB {
  193.                         label "Add ->"
  194.                     }
  195.                     PushButton removeRepPB {
  196.                         label "<- Remove"
  197.                     }
  198.                     Label dummyLayoutLabel {}
  199.                     Label dummyLayoutLabel {}
  200.                     horStretchFactor 0
  201.                     horShrinkFactor 0
  202.                     PushButton addBroPB {
  203.                         label "Add ->"
  204.                     }
  205.                     PushButton removeBroPB {
  206.                         label "<- Remove"
  207.                     }
  208.                 }
  209.                 DlgColumn DC {
  210.                     Label L {
  211.                         text "enabled (no entries means no check on classes)"
  212.                     }
  213.                     TextList selClassTL { 
  214.                         selectionPolicy MULTIPLE
  215.                         rowCount 6
  216.                     }
  217.                     Label L {
  218.                         text "enabled (no entries means no check on types)"
  219.                     }
  220.                     TextList selFileTL { 
  221.                         selectionPolicy MULTIPLE
  222.                         rowCount 6
  223.                     }
  224.                 }
  225.             }
  226.             Label dummyLayoutLabel {}
  227.         }
  228.     } 
  229.  
  230.     $this.NG.DC.DR.DC.addRepPB activated "$this addRepType"
  231.     $this.NG.DC.DR.DC.removeRepPB activated " $this removeRepType "
  232.     $this.NG.DC.DR.DC.addBroPB activated " $this addBrowserType "
  233.     $this.NG.DC.DR.DC.removeBroPB activated " $this removeBrowserType "
  234.  
  235.     CoBrEnablePage::createInterface $this
  236. }
  237.  
  238. method BrEnablePage::clearInterface {this} {
  239.         set classTypes "[[.main BrowsObj] names]"
  240.         [$this if].classTL entrySet [lsort $classTypes]
  241.     [$this if].classTL selectedSet ""
  242.     [$this if].selClassTL entrySet ""
  243.     [$this if].selClassTL selectedSet ""
  244.     [[$this noteBkDialog] cPage] setMethods ""
  245.     [$this if].fileTL entrySet ""
  246.     [$this if].selFileTL entrySet ""
  247.     [$this if].selFileTL selectedSet ""
  248.  
  249.     [$this if].selCountOM selected "don't care"
  250.     [$this if].checkOn selected "Nothing"
  251.     [$this if].enableMLT text ""
  252. }
  253.  
  254. method BrEnablePage::fromInterface {this} {
  255.  
  256.     set spec [CoBrEnablePage::fromInterface $this]
  257.  
  258.     set selObjTypes [[$this if].selClassTL entrySet]
  259.     # save this part only if not all the possible classes 
  260.     # are selected
  261.     if {![lempty $selObjTypes]} {
  262.         set spec "$spec selIsATypes \"$selObjTypes\""
  263.     }
  264.     set selFileTypes [[$this if].selFileTL entrySet]
  265.     # save this part only if not all the possible fileTypes 
  266.     # are selected
  267.     if {![lempty $selFileTypes]} {
  268.         set spec "$spec selTypes \"$selFileTypes\""
  269.     }
  270.  
  271.     return $spec
  272. }
  273.  
  274. method BrEnablePage::toInterface {this key value} {
  275.  
  276.     CoBrEnablePage::toInterface $this $key $value
  277.  
  278.     if {$key == "selIsATypes"} {
  279.         # remove the selected isa types from the classTL
  280.         set newEntrySet ""
  281.         foreach entry [[$this if].classTL entrySet] {
  282.             if {[lsearch -exact $value $entry] == -1} {
  283.                 lappend newEntrySet $entry
  284.             }
  285.         }
  286.         [$this if].classTL entrySet $newEntrySet
  287.         [$this if].selClassTL entrySet $value
  288.         $this addRepType        
  289.     }
  290.  
  291.     if {$key == "selTypes"} {
  292.         # remove the selected types from the fileTL
  293.         # remove the selected isa types from the classTL
  294.         set newEntrySet ""
  295.         foreach entry [[$this if].fileTL entrySet] {
  296.             if {[lsearch -exact $value $entry] == -1} {
  297.                 lappend newEntrySet $entry
  298.             }
  299.         }
  300.         [$this if].fileTL entrySet $newEntrySet
  301.         [$this if].selFileTL entrySet $value
  302.     }
  303. }
  304.  
  305. method BrEnablePage::makeListUnique {this list} {
  306.     set unique {}
  307.     foreach n $list {
  308.     if {[lsearch -exact $unique $n] == -1} {
  309.         lappend unique $n
  310.     }
  311.     }
  312.     return $unique
  313. }
  314.  
  315. method BrEnablePage::getBrowserTypes {this classes} {
  316.     set newEntrySet ""
  317.     foreach i $classes {
  318.         set types [CustEditor::subTypes $i]
  319.             foreach type $types {
  320.             if {[lsearch -exact $newEntrySet $type] == -1} {
  321.                 lappend newEntrySet $type
  322.             }
  323.             }
  324.     }
  325.     return $newEntrySet
  326. }
  327.  
  328. # Do not delete this line -- regeneration end marker
  329.  
  330.