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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)editoropti.tcl    /main/titanic/13
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)editoropti.tcl    /main/titanic/13   5 Nov 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. # End user added include file section
  13.  
  14. require "tooloption.tcl"
  15.  
  16. Class EditorOptions : {ToolOptions} {
  17.     constructor
  18.     method destructor
  19.     method scaleFont
  20.     method zoomOut
  21.     method zoomIn
  22.     method normalFont
  23.     method annotationFont
  24.     method boldFont
  25.     method foreground
  26.     method background
  27.     method selectionColor
  28.     method grid
  29.     method printOptions
  30.     method selectConnectors
  31.     method initialFold
  32.     method look
  33.     method initLook
  34.     method showVisibility
  35.     method initShowVisibility
  36. }
  37.  
  38. constructor EditorOptions {class this name} {
  39.     set this [ToolOptions::constructor $class $this $name]
  40.     # Start constructor user section
  41.     # End constructor user section
  42.     return $this
  43. }
  44.  
  45. method EditorOptions::destructor {this} {
  46.     # Start destructor user section
  47.     # End destructor user section
  48.     $this ToolOptions::destructor
  49. }
  50.  
  51. method EditorOptions::scaleFont {this font factor} {
  52.     set sep1 [string first "-" $font]
  53.     if {$sep1 != -1} {
  54.         set head [string range $font 0 $sep1]
  55.         set tail1 [string range $font [incr sep1] end]
  56.         set sep2 [string first "-" $tail1]
  57.         if {$sep2 != -1} {
  58.             append head [string range $tail1 0 $sep2]
  59.             set tail2 [string range $tail1 [incr sep2] end]
  60.             set sep3 [string first "-" $tail2]
  61.             if {$sep3 != -1} {
  62.                 set size [string range $tail2 0 [incr sep3 -1]]
  63.             } else {
  64.                 set size $tail2
  65.             }
  66.             return $head[expr round($size * $factor)]
  67.         }
  68.     }
  69.     return $font
  70. }
  71.  
  72. method EditorOptions::zoomOut {this} {
  73.     .main zoom 0.75
  74.     set scale [[.main editorArea] scale]
  75.     if {[m4_var get M4_zoom -context ude] != $scale} {
  76.     catch {m4_var set M4_zoom $scale -context ude}
  77.     }
  78. }
  79.  
  80. method EditorOptions::zoomIn {this} {
  81.     .main zoom 1.333333333333
  82.     set scale [[.main editorArea] scale]
  83.     if {[m4_var get M4_zoom -context ude] != $scale} {
  84.     catch {m4_var set M4_zoom $scale -context ude}
  85.     }
  86. }
  87.  
  88. method EditorOptions::normalFont {this} {
  89.     busy {
  90.     uplevel #0 require udefontcho.tcl
  91.     set scale [[.main editorArea] scale]
  92.     set font [m4_var get M4_font -context ude]
  93.     set scaledFont [$this scaleFont $font $scale]
  94.     UdeFontChooser new .main.normalFont \
  95.         -options $this \
  96.         -title "Normal Font" \
  97.         -orgFont $font \
  98.         -value "$scaledFont" \
  99.         -cancelPressed {%this delete} \
  100.         -okPressed {
  101.         set scale [expr 1 / [[.main editorArea] scale]]
  102.         set scaledFont [[%this options] scaleFont [%this value] $scale]
  103.         if {[%this orgFont] != "$scaledFont"} {
  104.             [.main editorArea] normalFontSpec "$scaledFont"
  105.             catch {m4_var set M4_font "$scaledFont" -context ude}
  106.         }
  107.         %this delete
  108.         }
  109.     }
  110.     .main.normalFont popUp
  111. }
  112.  
  113. method EditorOptions::annotationFont {this} {
  114.     busy {
  115.     uplevel #0 require udefontcho.tcl
  116.     set scale [[.main editorArea] scale]
  117.     set font [m4_var get M4_font_annotation -context ude]
  118.     set scaledFont [$this scaleFont $font $scale]
  119.     UdeFontChooser new .main.annotationFont \
  120.         -options $this \
  121.         -title "Annotation Font" \
  122.         -orgFont $font \
  123.         -value "$scaledFont" \
  124.         -cancelPressed {%this delete} \
  125.         -okPressed {
  126.         set scale [expr 1 / [[.main editorArea] scale]]
  127.         set scaledFont [[%this options] scaleFont [%this value] $scale]
  128.         if {[%this orgFont] != "$scaledFont"} {
  129.             [.main editorArea] annotationFontSpec "$scaledFont"
  130.             catch {m4_var set M4_font_annotation "$scaledFont" -context ude}
  131.         }
  132.         %this delete
  133.         }
  134.     }
  135.     .main.annotationFont popUp
  136. }
  137.  
  138. method EditorOptions::boldFont {this} {
  139.     busy {
  140.     uplevel #0 require udefontcho.tcl
  141.     set scale [[.main editorArea] scale]
  142.     set font [m4_var get M4_font_bold -context ude]
  143.     set scaledFont [$this scaleFont $font $scale]
  144.     UdeFontChooser new .main.boldFont \
  145.         -options $this \
  146.         -title "Bold Font" \
  147.         -orgFont $font \
  148.         -value "$scaledFont" \
  149.         -cancelPressed {%this delete} \
  150.         -okPressed {
  151.         set scale [expr 1 / [[.main editorArea] scale]]
  152.         set scaledFont [[%this options] scaleFont [%this value] $scale]
  153.         if {[%this orgFont] != "$scaledFont"} {
  154.             [.main editorArea] boldFontSpec "$scaledFont"
  155.             catch {m4_var set M4_font_bold "$scaledFont" -context ude}
  156.         }
  157.         %this delete
  158.         }
  159.     }
  160.     .main.boldFont popUp
  161. }
  162.  
  163. method EditorOptions::foreground {this} {
  164.     uplevel #0 require udecolorch.tcl
  165.     UdeColorChooser new .main.fg \
  166.     -options $this \
  167.     -title "Foreground" \
  168.     -value [m4_var get M4_fg -context ude] \
  169.     -cancelPressed {%this delete} \
  170.     -okPressed {
  171.         if {[m4_var get M4_fg -context ude] != [%this value]} {
  172.         [.main editorArea] areaForeground [%this value]
  173.         catch {m4_var set M4_fg [%this value] -context ude}
  174.         }
  175.         %this delete
  176.     }
  177.     .main.fg popUp
  178. }
  179.  
  180. method EditorOptions::background {this} {
  181.     uplevel #0 require udecolorch.tcl
  182.     UdeColorChooser new .main.bg \
  183.     -options $this \
  184.     -title "Background" \
  185.     -value [m4_var get M4_bg -context ude] \
  186.     -cancelPressed {%this delete} \
  187.     -okPressed {
  188.         if {[m4_var get M4_bg -context ude] != [%this value]} {
  189.         [.main editorArea] areaBackground [%this value]
  190.         catch {m4_var set M4_bg [%this value] -context ude}
  191.         }
  192.         %this delete
  193.     }
  194.     .main.bg popUp
  195. }
  196.  
  197. method EditorOptions::selectionColor {this} {
  198.     uplevel #0 require udecolorch.tcl
  199.     UdeColorChooser new .main.selColor \
  200.     -options $this \
  201.     -title "Selection Color" \
  202.     -value [m4_var get M4_sel_color -context ude] \
  203.     -cancelPressed {%this delete} \
  204.     -okPressed {
  205.         if {[m4_var get M4_sel_color -context ude] != [%this value]} {
  206.         [.main editorArea] areaSelectionColor [%this value]
  207.         catch {m4_var set M4_sel_color [%this value] -context ude}
  208.         }
  209.         %this delete
  210.     }
  211.     .main.selColor popUp
  212. }
  213.  
  214. method EditorOptions::grid {this} {
  215.     uplevel #0 require griddialog.tcl
  216.     GridDialog new .main.grid -area [.main editorArea]
  217.     .main.grid popUp
  218. }
  219.  
  220. method EditorOptions::printOptions {this} {
  221.     .main popUpPrintOptions
  222. }
  223.  
  224. method EditorOptions::selectConnectors {this} {
  225.     set selectConns [[.main menuBar].options.menu.selectconnectorstoo state]
  226.     m4_var set M4_select_conns $selectConns -context [.main diagramType]
  227.     [.main editorArea] selectConnectorsToo $selectConns
  228. }
  229.  
  230. method EditorOptions::initialFold {this} {
  231.     set initialFold [[.main menuBar].options.menu.initialfold state]
  232.     m4_var set M4_initial_fold $initialFold -context [.main diagramType]
  233. }
  234.  
  235. method EditorOptions::look {this} {
  236.     set uml [[.main menuBar].options.menu.UML state]
  237.     if $uml {
  238.         set look UML
  239.     } else {
  240.         set look OMT
  241.     }
  242.  
  243.     .main switchLook $look
  244.     # the switch action may have been cancelled:
  245.     set finalLook [m4_var get M4_diagram_look]
  246.     [.main menuBar].options.menu.$finalLook state 1
  247. }
  248.  
  249. method EditorOptions::initLook {this} {
  250.     set look [m4_var get M4_diagram_look]
  251.     [.main menuBar].options.menu.$look state 1
  252. }
  253.  
  254. method EditorOptions::showVisibility {this} {
  255.     [.main editorArea] getSelectedComponents
  256.     set showVisibility [[.main menuBar].options.menu.showvisibility state]
  257.     set cc [ClientContext::global]
  258.     set pv [$cc currentPhase]
  259.     set context [[$pv phase] type]
  260.     catch {m4_var set M4_show_visibility $showVisibility -context $context}
  261.     [.main editorArea] updateEditorComponents false
  262. }
  263.  
  264. method EditorOptions::initShowVisibility {this} {
  265.     set svButton [.main menuBar].options.menu.showvisibility
  266.     if [isCommand $svButton] {
  267.         set cc [ClientContext::global]
  268.         set pv [$cc currentPhase]
  269.         set context [[$pv phase] type]
  270.         $svButton state [m4_var get M4_show_visibility \
  271.                         -context $context]
  272.     }
  273. }
  274.  
  275. # Do not delete this line -- regeneration end marker
  276.  
  277.