Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ElmerCSC
GitHub Repository: ElmerCSC/elmerfem
Path: blob/devel/post/src/tcl/colorscale.tcl
3203 views
#/*****************************************************************************
# *
# *  Elmer, A Finite Element Software for Multiphysical Problems
# *
# *  Copyright 1st April 1995 - , CSC - IT Center for Science Ltd., Finland
# * 
# *  This program is free software; you can redistribute it and/or
# *  modify it under the terms of the GNU General Public License
# *  as published by the Free Software Foundation; either version 2
# *  of the License, or (at your option) any later version.
# * 
# *  This program is distributed in the hope that it will be useful,
# *  but WITHOUT ANY WARRANTY; without even the implied warranty of
# *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# *  GNU General Public License for more details.
# *
# *  You should have received a copy of the GNU General Public License
# *  along with this program (in file fem/GPL-2); if not, write to the 
# *  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 
# *  Boston, MA 02110-1301, USA.
# *
# *****************************************************************************/

#*******************************************************************************
#*
#* Colorscale display parameter settings
#*
#*******************************************************************************
#*
#*                     Author:       Juha Ruokolainen
#*
#*                    Address: CSC - IT Center for Science Ltd.
#*                                Keilaranta 14, P.O. BOX 405
#*                                  02101 Espoo, Finland
#*                                  Tel. +358 0 457 2723
#*                                Telefax: +358 0 457 2302
#*                              EMail: [email protected]
#*
#*                       Date: 26 Sep 1995
#*
#*                Modified by:
#*
#*       Date of modification:
#*
#*******************************************************************************
#
# 
#

#
#
# 22 Apr 1996
#

set ColorScaleStyle         1
set ColorScaleEntries       6
set ColorScaleDecimals      4
set ColorScaleX          -0.8
set ColorScaleY          -0.8
set ColorScaleThickness   0.1
set ColorScaleLength      1.5
set ColorScaleFont       "-adobe-helvetica-bold-r-normal--17-120-100-100-p-88-iso8859-1"
set ColorScaleFontColor  [@ 256*256*255+256*255+255]
set ColorScaleColor      "none"
set ColorScaleColorMin   0.0
set ColorScaleColorMax   1.0

proc colscale_update {} {

   .colscale.set.min delete 0 end
   .colscale.set.max delete 0 end

   global ColorScaleColor ColorScaleColorMin ColorScaleColorMax

   UpdateVariable ColorScaleColor

   .colscale.set.min insert end [format %-10.5g $ColorScaleColorMin]
   .colscale.set.max insert end [format %-10.5g $ColorScaleColorMax]
}

proc colscale_edit { } {
    global ColorScaleStyle ColorScaleEntries ColorScaleDecimals ColorScaleX ColorScaleY
    global ColorScaleThickness ColorScaleLength
    global ColorScaleFont ColorScaleFontColor ColorScaleColor

    global ColorScaleColorMin ColorScaleColorMax ColorScaleColorSetMinMax

    if { [winfo exists .colscale] } {
        wm iconify .colscale
        wm deiconify .colscale
        return
    }

    toplevel .colscale
    wm title .colscale "Color Scale Edit"
    place_window .colscale

    frame .colscale.style
    label .colscale.style.label -text "Colorscale Style: "
    radiobutton .colscale.style.vert -value 0 -variable ColorScaleStyle -text "Vertical"
    radiobutton .colscale.style.hori -value 1 -variable ColorScaleStyle -text "Horizontal"

    pack .colscale.style -side top
    pack .colscale.style.label -side left
    pack .colscale.style.vert -side left -fill x
    pack .colscale.style.hori -side left  -fill x


    frame .colscale.entr
    label .colscale.entr.label -text "Labels: "
    entry .colscale.entr.entry -relief sunken -width 3 -textvariable ColorScaleEntries

    label .colscale.entr.ldecim -text "Decimals: "
    entry .colscale.entr.edecim -relief sunken -width 3 -textvariable ColorScaleDecimals

    pack .colscale.entr -side top
    pack .colscale.entr.label -side left
    pack .colscale.entr.entry -side left -fill x

    pack .colscale.entr.ldecim -side left
    pack .colscale.entr.edecim -side left -fill x

#
# colscale color
#
    frame .colscale.vari
    label .colscale.vari.label -text "Color Variable: "
    button .colscale.vari.but -textvariable ColorScaleColor -command { set ColorScaleColor [make_scalar_list]; colscale_update }

    pack .colscale.vari -side top
    pack .colscale.vari.label -side left
    pack .colscale.vari.but -side left -fill x

#
# Generate ...
#
    frame .colscale.set

    label .colscale.set.min_lab -text "Min: "
    entry .colscale.set.min -width 10 -textvariable ColorScaleColorMin
    bind .colscale.set.min <Return> colscale_update

    label .colscale.set.max_lab -text "Max: "
    entry .colscale.set.max -width 10 -textvariable ColorScaleColorMax
    bind .colscale.set.max <Return> colscale_update

    checkbutton .colscale.set.keep -text "Keep" -variable ColorScaleColorSetMinMax \
          -command colscale_update

    pack .colscale.set.min_lab -side left
    pack .colscale.set.min -side left
    pack .colscale.set.max_lab -side left
    pack .colscale.set.max -side left
    pack .colscale.set.keep -side left
    pack .colscale.set -side top
#
#
#
    frame .colscale.x
    label .colscale.x.label -text "X Position: "
    entry .colscale.x.entry -relief sunken -width 5 -textvariable ColorScaleX

    frame .colscale.y
    label .colscale.y.label -text "Y Position: "
    entry .colscale.y.entry -relief sunken -width 5 -textvariable ColorScaleY

    frame .colscale.l
    label .colscale.l.label -text "Length: "
    entry .colscale.l.entry -relief sunken -width 5 -textvariable ColorScaleLength

    frame .colscale.t
    label .colscale.t.label -text "Thickness: "
    entry .colscale.t.entry -relief sunken -width 5 -textvariable ColorScaleThickness

    pack .colscale.x -side top
    pack .colscale.x.label -side left
    pack .colscale.x.entry -side left -fill x

    pack .colscale.y -side top
    pack .colscale.y.label -side left
    pack .colscale.y.entry -side left -fill x

    pack .colscale.l -side top
    pack .colscale.l.label -side left
    pack .colscale.l.entry -side left -fill x

    pack .colscale.t -side top
    pack .colscale.t.label -side left
    pack .colscale.t.entry -side left -fill x
#
#
#
      frame .colscale.font
      button .colscale.font.font  -text "Label Font"  -command { \
          setfont [txt_Edit "FontSelect"]; }
      button .colscale.font.color -text "Label Color" -command { \
         set value [tk_chooseColor -title "Choose Font Color" -parent .colscale.font.color -initialcolor white]; \
          scan $value "#%02x%02x%02x" R G B; set ColorScaleFontColor [@ 256*256*$R+256*$G+$B]; }
 
      pack .colscale.font -side top
      pack .colscale.font.font  -side left
      pack .colscale.font.color -side left -fill x

#
# buttons
#
    frame .colscale.buttons
    button .colscale.buttons.apply -text "Apply" -command "UpdateObject; play"
    button .colscale.buttons.close -text "Close" -command "destroy .colscale"

    pack .colscale.buttons -side top
    pack .colscale.buttons.apply -side left
    pack .colscale.buttons.close -side left -fill x
}