source: SHX/trunk/SeismicHandler/commands/param.py @ 1129

Revision 1129, 2.9 KB checked in by klaus, 4 years ago (diff)

first working GUI for parameter set

Line 
1# -*- coding: utf-8 -*-
2
3#    This file is part of Seismic Handler eXtended (SHX). For terms of use and
4#    license information please see license.txt and visit
5#    http://www.seismic-handler.org/portal/wiki/Shx/LicenseTerms
6
7from SeismicHandler.basics.command import BaseCommand
8from SeismicHandler.basics.analysispar import AnalysisPar
9from SeismicHandler.basics.error import ShxError
10from SeismicHandler.basics.messages import ui_event
11
12provides = {"param": "param"}
13class param(BaseCommand):
14    """
15    URI:http://www.seismic-handler.org/portal/wiki/ShParam
16    """
17    numberOfParameters = [1,2,3]
18    parameterQueries = [
19        {
20            "text": "subcmd",
21            "type": "str",
22            "question": False,
23        },
24        {
25            "text": "parameter name",
26            "type": "str",
27            "question": False,
28        },
29        {
30            "text": "parameter value/output variable",
31            "type": "str",
32            "question": False,
33        },
34    ]
35    known_qualifiers = [
36    ]
37    redraw = False
38   
39    legalcmds = {
40        'set'  : 3,
41        'get'  : 3,
42        'dump' : 1,
43        'save' : 2,
44        'load' : 2,
45        'reset': 1,
46    }
47
48    def __init__(self, *args, **kwargs):
49        # unroll args & kwargs
50        BaseCommand.__init__(self, *args, **kwargs)
51
52    #@timeit
53    def run(self):
54        subcmd = self.parameters[0].lower()
55        if subcmd not in self.legalcmds.keys():
56            raise ShxError( "illegal param subcmd '%s'" % subcmd )
57        if len(self.parameters) != self.legalcmds[subcmd]:
58            raise ShxError( "need %d parameters" % self.legalcmds[subcmd] )
59        if len(self.parameters) == 1:
60            pass
61        elif len(self.parameters) == 2:
62            subcmd, name = self.parameters
63        else:
64            subcmd, name, value = self.parameters
65            name = name.lower()
66        subcmd = subcmd.lower()
67        analysispar = AnalysisPar()
68
69        if subcmd == 'set':
70            analysispar.setValueFromString( name, value )
71            ui_event( "updateparams" )
72        elif subcmd == 'get':
73            symbname = value
74            if not symbname.startswith('&'):
75                raise ShxError( "syntax error in output variable '%s'"
76                    % symbname )
77            setattr(self.symbols, symbname[1:],
78                analysispar.getValueAsString(name) )
79        elif subcmd == 'dump':
80            print analysispar.dump()
81        elif subcmd == 'save':
82            analysispar.save( name )
83        elif subcmd == 'load':
84            analysispar.load( name )
85            self.redraw = True
86            ui_event( "updateparams" )
87        elif subcmd == 'reset':
88            analysispar.reset()
89            ui_event( "updateparams" )
90        else:
91            print "This cannot happen, program bug in param.py"
92            return
93       
94
95if __name__ == "__main__":
96    import doctest
97    doctest.testmod(exclude_empty=True)
Note: See TracBrowser for help on using the repository browser.