source: trunk/gui/scripts/resources.tcl @ 2417

Last change on this file since 2417 was 1916, checked in by dkearney, 14 years ago

switching from RpMediaPlayer? to RpVideo? code for the video viewer widget. changed flowdial widget so the dial moved as needed for the video widget.

File size: 3.5 KB
Line 
1# ----------------------------------------------------------------------
2#  COMPONENT: resources
3#
4#  This file contains routines to parse settings from the "resources"
5#  file specified by the middleware.  This file is located via an
6#  environment variable as $SESSIONDIR/resources.  If this file
7#  exists, it is used to load settings that affect the rest of the
8#  application.  It looks something like this:
9#
10#    application_name "My Tool"
11#    results_directory /tmp
12#    filexfer_port 6593
13#
14# ======================================================================
15#  AUTHOR:  Michael McLennan, Purdue University
16#  Copyright (c) 2004-2005  Purdue Research Foundation
17#
18#  See the file "license.terms" for information on usage and
19#  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
20# ======================================================================
21package require Itcl
22
23namespace eval Rappture { # forward declaration }
24namespace eval Rappture::resources {
25    #
26    # Set up a safe interpreter for loading filexfer options...
27    #
28    variable optionParser [interp create -safe]
29    foreach cmd [$optionParser eval {info commands}] {
30        $optionParser hide $cmd
31    }
32    # this lets us ignore unrecognized commands in the file:
33    $optionParser invokehidden proc unknown {args} {}
34}
35
36# ----------------------------------------------------------------------
37# USAGE: Rappture::resources::register ?<name> <proc> ...?
38#
39# Used by other files throughout the Rappture GUI to register their
40# own commands for the resources parser.  Creates a command <name>
41# in the resources interpreter, and registers the <proc> to handle
42# that command.
43# ----------------------------------------------------------------------
44proc Rappture::resources::register {args} {
45    variable optionParser
46    foreach {name proc} $args {
47        $optionParser alias $name $proc
48    }
49}
50
51# ----------------------------------------------------------------------
52# USAGE: Rappture::resources::load ?<errorCallback>?
53#
54# Called in the main program to load resources from the file
55# $SESSIONDIR/resources.  As a side effect of loading resources,
56# the data is stored in various variables throughout the package.
57#
58# Returns 1 if successful, and 0 otherwise.  Any errors are passed
59# along to the <errorCallback>.  If not specified, then the default
60# callback pops up a message box.
61# ----------------------------------------------------------------------
62proc Rappture::resources::load {{callback tk_messageBox}} {
63    global env
64    variable optionParser
65
66    #
67    # First, make sure that we've loaded all bits of code that
68    # might register commands with the resources interp.  These
69    # are all in procs named xxx_init_resources.
70    #
71    global auto_index
72    foreach name [array names auto_index *_init_resources] {
73        eval $name
74    }
75
76    #
77    # Look for a $SESSIONDIR variable and a file called
78    # $SESSIONDIR/resources.  If found, then load the settings
79    # from that file.
80    #
81    if {[info exists env(SESSIONDIR)]} {
82        set file $env(SESSIONDIR)/resources
83        if {![file exists $file]} {
84            return 0
85        }
86
87        if {[catch {
88            set fid [open $file r]
89            set info [read $fid]
90            close $fid
91            $optionParser eval $info
92        } result]} {
93            if {"" != $callback} {
94                after 1 [list $callback -title Error -icon error -message "Error in resources file:\n$result"]
95            }
96            return 0
97        }
98    }
99    return 1
100}
Note: See TracBrowser for help on using the repository browser.