source: tol/tolbaseBLT/lib/byswidget/btoplevel/btoplevel.tcl

devel
Last change on this file was 56ade3b, checked in by Jorge Pérez <josp.jorge@…>, 10 years ago

fixes #1932, se ha creado la rama trunk/tolbaseBLT copia de trunk/tolbase

git-svn-id: ​https://www.tol-project.org/svn/tolp/trunk@7330 be4846ae-f051-483a-831f-b64e7d08527f

  • Property mode set to 100644
File size: 4.3 KB
Line 
1#/////////////////////////////////////////////////////////////////////////////
2# FILE    : btoplevel.tcl
3# PURPOSE : Bayes Top Level. TopLevel con opciones
4#/////////////////////////////////////////////////////////////////////////////
5
6
7package require byscommon
8
9
10#/////////////////////////////////////////////////////////////////////////////
11::snit::widgetadaptor btoplevel {
12#
13# PURPOSE: Sobrecargamos un toplevel para que tenga nuevas funcionalidades
14#
15#/////////////////////////////////////////////////////////////////////////////
16  # opciones especificas
17  # title -> titulo del toplevel
18  # closecmd -> comando a ejecutar al cerrar el toplevel
19  # iniconfig -> Nombre que se asigna al toplevel para identificar sus opciones
20  #           en el archivo de configuración .ini por defecto "" en ese caso
21  #           no se guardaran las opciones
22  # geometry -> Geometria inicial, antes de que exista en el .ini
23#/////////////////////////////////////////////////////////////////////////////
24  option -title    {}
25  option -closecmd
26  option -iniconfig    ""
27  option -geometry 780x580+10+10
28#/////////////////////////////////////////////////////////////////////////////
29
30
31  #///////////////////////////////////////////////////////////////////////////
32  constructor {args} {
33  #
34  # PURPOSE: Constructor de un btoplevel. Crea una instancia de un toplevel
35  #
36  # PARAMETERS:
37  #   args -> Lista de opciones especificas de un toplevel, mas las propias de
38  #           un btoplevel
39  #
40  #///////////////////////////////////////////////////////////////////////////
41    # Widget que va a servir de contenedor para btoplevel
42    installhull [toplevel $self]
43    # Apply all arguments given:
44    $self configurelist $args
45    # Destroy
46#    bind $self <Destroy> +[list [codename Destroy] $self]
47    wm protocol $self WM_DELETE_WINDOW [list [codename Destroy] $self]
48    # .ini
49    ReadIni $self
50  }
51
52
53  #///////////////////////////////////////////////////////////////////////////
54  proc Destroy {self} {
55  #
56  # PURPOSE: Funciones a evaluar al cerrar un toplevel. Si no tiene
57  #          procedimento propio se asume que se desea destruir el toplevel
58  #
59  # PARAMETERS:
60  #   self: toplevel
61  #
62  #///////////////////////////////////////////////////////////////////////////
63    # Save .ini
64    WriteIni $self
65    # destroy
66    set cmd [$self cget -closecmd]
67    if {[string length $cmd]} {
68       eval $cmd
69    } else  {
70      destroy $self
71    }
72  }
73
74
75  #///////////////////////////////////////////////////////////////////////////
76  proc WriteIni {self} {
77  #
78  # PURPOSE: Guarda en el .ini informacion referente al toplevel
79  #
80  # PARAMETERS:
81  #   self: toplevel
82  #
83  #///////////////////////////////////////////////////////////////////////////
84    if { [$self cget -iniconfig] ne "" } {
85      # comprobamos cargado namespace y variable de .ini
86#&& [info exists idIni]
87      if {[namespace exists ::iniFile]} {
88        set wini ::iniFile::Write
89        set nm [$self cget -iniconfig]
90        if {![string length $nm]} {
91          set nm $self
92        }
93        $wini $nm wm,state [wm state    $self]
94        $wini $nm geometry [wm geometry $self]
95      }
96    }
97  }
98
99
100  #///////////////////////////////////////////////////////////////////////////
101  proc ReadIni {self} {
102  #
103  # PURPOSE: Recupera del .ini informacion referente al toplevel
104  #
105  # PARAMETERS:
106  #   self: toplevel
107  #
108  #///////////////////////////////////////////////////////////////////////////
109    if { [$self cget -iniconfig] ne "" } {
110      # comprobamos cargado namespace y variable de .ini
111#&& [info exists idIni]
112      if {[namespace exists ::iniFile]} {
113
114        set rini ::iniFile::Read
115        set nm [$self cget -iniconfig]
116        if {![string length $nm]} {
117          set nm $self
118        }
119        set stt [::iniFile::ReadWMState $rini $nm]
120        set geo [$rini $nm geometry [$self cget -geometry]]
121        if {[string length $geo]} {
122          wm geometry $self $geo
123        }
124        wm state $self $stt
125      }
126    }
127  }
128
129
130  #///////////////////////////////////////////////////////////////////////////
131  # cget and configure
132  #///////////////////////////////////////////////////////////////////////////
133  oncget -title {
134    return [wm title $self]
135  }
136  onconfigure -title {value} {
137    wm title $self $value
138  }
139
140  # delegacion de metodos y opciones
141  delegate method * to hull
142  delegate option * to hull
143}
144
145package provide btoplevel 1.0
Note: See TracBrowser for help on using the repository browser.