home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / brenablepa.tcl < prev    next >
Text File  |  1997-03-14  |  11KB  |  360 lines

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