# Managed window class definition for GDBtk. # Copyright 1998, 1999 Cygnus Solutions # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License (GPL) 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. class ManagedWin { inherit itk::Widget public { method reconfig {} method destroy_toplevel {} method quit_if_last {} {return 1} method enable {on} method pickle {} method reveal {} method window_name {wname {iname ""}} variable nosize 0 proc find {win} proc open {args} proc open_dlg {class args} proc init {} proc restart {} proc startup {} proc shutdown {} } protected { proc dont_remember_size {} { return 0 } method freeze_me {} method thaw_me {} variable Top } private { proc _create {class args} proc _open {class args} proc make_icon_window {name {file "gdbtk_icon"}} } protected { # manage_active - list of active window objects common manage_active "" # this is the counter of TopLevelWins open # when it hits 0, exit. common numTopWins 0 common screenwidth common screenheight common mainwindow } constructor {args} { debug "$this args=$args" lappend manage_active $this set Top [winfo toplevel $itk_interior] } destructor { set infoList [after info] # remove object from list set i [lsearch -exact $manage_active $this] if {$i != -1} { set manage_active [lreplace $manage_active $i $i] } # save geometry set g [wm geometry [winfo toplevel [namespace tail $this]]] pref setd gdb/geometry/[namespace tail $this] $g # If no toplevels remain, quit. However, check the quit_if_last # flag since we might be doing something like displaying a # splash screen at startup... if {!$numTopWins && [quit_if_last]} { # save window positions of remaining windows foreach obj $manage_active { set g [wm geometry [winfo toplevel [namespace tail $obj]]] pref setd gdb/geometry/[namespace tail $obj] $g } pref_save gdb_force_quit } else { destroy_toplevel } } }