pagesmgr.tcl

pagesmgr.tcl
This file is part of Unifix BWidget Toolkit
$Id: pagesmgr.tcl,v 1.4 2001/10/14 19:32:58 hobbs Exp $
Index of commands:
- PagesManager::create
- PagesManager::configure
- PagesManager::cget
- PagesManager::compute_size
- PagesManager::add
- PagesManager::delete
- PagesManager::raise
- PagesManager::page
- PagesManager::pages
- PagesManager::getframe
- PagesManager::_test_page
- PagesManager::_select
- PagesManager::_redraw
- PagesManager::_draw_area
- PagesManager::_realize


PagesManager
Comments  
Arguments  
Used by  
Uses  
namespace eval PagesManager {
    Widget::declare PagesManager {
        {-background TkResource "" 0 frame}
        {-width      Int        0  0 "%d >= 0"}
        {-height     Int        0  0 "%d >= 0"}
    }

    Widget::addmap PagesManager "" :cmd {-width {} -height {}}

    proc ::PagesManager { path args } { return [eval PagesManager::create $path $args] }
    proc use {} {}
}


PagesManager::_destroy
Comments Command PagesManager::_destroy
Arguments path
Used by  
Uses Widget::destroy
proc PagesManager::_destroy { path } {
    variable $path
    upvar 0  $path data

    Widget::destroy $path
    unset data
    rename $path {}
}


PagesManager::_draw_area
Comments Command PagesManager::_draw_area
Arguments path
Used by  
Uses  
proc PagesManager::_draw_area { path } {
    variable $path
    upvar 0  $path data

    set w   [winfo width  $path]
    set h   [winfo height $path]
    set sel $data(select)
    if { $sel != "" } {
        if { [llength [$path:cmd find withtag "window"]] } {
            $path:cmd coords "window" 0 0
            $path:cmd itemconfigure "window"    \
                -width  $w        \
                -height $h    \
                -window $path.f$sel
        } else {
            $path:cmd create window 0 0 \
                -width  $w          \
                -height $h       \
                -anchor nw                      \
                -tags   "window"                \
                -window $path.f$sel
        }
    } else {
        $path:cmd delete "window"
    }
}


PagesManager::_realize
Comments Command PagesManager::_realize
Arguments path
Used by  
Uses Widget::cget
proc PagesManager::_realize { path } {
    variable $path
    upvar 0  $path data

    if { [set width  [Widget::cget $path -width]]  == 0 ||
         [set height [Widget::cget $path -height]] == 0 } {
        compute_size $path
    }

    set data(realized) 1
    _draw_area $path
    bind $path <Configure> "PagesManager::_draw_area $path"
}


PagesManager::_redraw
Comments Command PagesManager::_redraw
Arguments path
Used by  
Uses  
proc PagesManager::_redraw { path } {
    variable $path
    upvar 0  $path data

    if { !$data(realized) } {
        return
    }
    _draw_area $path
}


PagesManager::_select
Comments Command PagesManager::_select
Arguments path
page
Used by  
Uses  
proc PagesManager::_select { path page } {
    variable $path
    upvar 0  $path data

    set oldsel $data(select)
    if { $page != $oldsel } {
        set data(select) $page
        _draw_area $path
    }
}


PagesManager::_test_page
Comments Command PagesManager::_test_page
Arguments path
page
Used by  
Uses  
proc PagesManager::_test_page { path page } {
    variable $path
    upvar 0  $path data

    if { [set pos [lsearch $data(pages) $page]] == -1 } {
        return -code error "page \"$page\" does not exists"
    }
    return $pos
}


PagesManager::add
Comments Command PagesManager::add
Arguments path
page
Used by  
Uses Widget::cget
proc PagesManager::add { path page } {
    variable $path
    upvar 0  $path data

    if { [lsearch -exact $data(pages) $page] != -1 } {
        return -code error "page \"$page\" already exists"
    }

    lappend data(pages) $page

    frame $path.f$page -relief flat \
        -background [Widget::cget $path -background] -borderwidth 0

    return $path.f$page
}


PagesManager::cget
Comments Command PagesManager::cget
Arguments path
option
Used by  
Uses Widget::cget
proc PagesManager::cget { path option } {
    return [Widget::cget $path $option]
}


PagesManager::compute_size
Comments Command PagesManager::compute_size
Arguments path
Used by  
Uses  
proc PagesManager::compute_size { path } {
    variable $path
    upvar 0  $path data

    set wmax 0
    set hmax 0
    update idletasks
    foreach page $data(pages) {
        set w    [winfo reqwidth  $path.f$page]
        set h    [winfo reqheight $path.f$page]
        set wmax [expr {$w>$wmax ? $w : $wmax}]
        set hmax [expr {$h>$hmax ? $h : $hmax}]
    }
    configure $path -width $wmax -height $hmax
}


PagesManager::configure
Comments Command PagesManager::configure
Arguments path
args
Used by  
Uses Widget::configure
proc PagesManager::configure { path args } {
    return [Widget::configure $path $args]
}


PagesManager::create
Comments Command PagesManager::create
Arguments path
args
Used by  
Uses Widget::init
Widget::subcget
proc PagesManager::create { path args } {
    variable $path
    upvar 0  $path data

    Widget::init PagesManager $path $args

    set data(select)   ""
    set data(pages)    {}
    set data(cpt)      0
    set data(realized) 0

    # --- creation du canvas -----------------------------------------------------------------
    eval canvas $path -relief flat -bd 0 -highlightthickness 0 \
        [Widget::subcget $path :cmd]

    bind $path <Configure> "PagesManager::_realize $path"
    bind $path <Destroy>   "PagesManager::_destroy $path"

    rename $path ::$path:cmd
    proc ::$path { cmd args } "return \[eval PagesManager::\$cmd $path \$args\]"

    return $path
}


PagesManager::delete
Comments Command PagesManager::delete
Arguments path
page
Used by  
Uses  
proc PagesManager::delete { path page } {
    variable $path
    upvar 0  $path data

    set pos [_test_page $path $page]
    set data(pages) [lreplace $data(pages) $pos $pos]
    if { $data(select) == $page } {
        set data(select) ""
    }
    destroy $path.f$page
    _redraw $path
}


PagesManager::getframe
Comments Command PagesManager::getframe
Arguments path
page
Used by  
Uses  
proc PagesManager::getframe { path page } {
    return $path.f$page
}


PagesManager::page
Comments Command PagesManager::page - deprecated, use pages
Arguments path
first
last
Used by  
Uses  
proc PagesManager::page { path first {last ""} } {
    variable $path
    upvar 0  $path data

    if { $last == "" } {
        return [lindex $data(pages) $first]
    } else {
        return [lrange $data(pages) $first $last]
    }
}


PagesManager::pages
Comments Command PagesManager::pages
Arguments path
first
last
Used by  
Uses  
proc PagesManager::pages { path {first ""} {last ""} } {
    variable $path
    upvar 0  $path data

    if { ![string length $first] } {
    return $data(pages)
    }

    if { ![string length $last] } {
        return [lindex $data(pages) $first]
    } else {
        return [lrange $data(pages) $first $last]
    }
}


PagesManager::raise
Comments Command PagesManager::raise
Arguments path
page
Used by  
Uses  
proc PagesManager::raise { path {page ""} } {
    variable $path
    upvar 0  $path data

    if { $page != "" } {
        _test_page $path $page
        _select $path $page
    }
    return $data(select)
}
generated by zdoc.tcl on 2003-03-06 00:21:54