From: Mark P. <mp...@ya...> - 2003-09-27 02:13:08
|
Hello all. There's been some discussion of either creating a program to make it easier to work with the .ini file, or changing the format. What if we write a program which gets extra info from special comments placed in the ini file and aids the user in editing? There is one very big advantage to doing it this way: EMC does not need to be modified, it just sees a whole bunch of extra comments. I intended this post to be short, but it's more of a specification now... hope it's not a waste of effort :) The program goes through the INI file looking for blocks of lines; these blocks start with the first comment after the previous parameter definition *or* section start. There don't have to be *any* comments at all, actually: a one-line block. In this case, the user doesn't get any extra help or error checking. The block ends with the parameter definition, i.e. "HELP_FILE = doc/help.txt" For each block, there can be any number of regular comments, and as many special comments as make sense. Anything in between the start and end of the block- either a plain comment or a special comment - refers to this particular parameter. For any of these lines, if they are a plain comment, they are displayed to the user; the special comments are interpreted by the program. A portion of the INI file, with special comments added. "special comments" start with ;@<keyword> rather than just ; Keywords listed below this sample. ---------------sample----------------- [DISPLAY] ; Name of display program, e.g., xemc ;@TYPE string ;@CHOICE tkemc xemc yemc keystick emcpanel @OTHER DISPLAY = tkemc ; Cycle time, in seconds, that display will sleep between polls ;@TYPE float ;@MIN 0.01 CYCLE_TIME = 0.100 ; Path to help file ;@TYPE file HELP_FILE = doc/help.txt ; Initial display setting for position, RELATIVE or MACHINE ;@CHOICE MACHINE RELATIVE POSITION_OFFSET = MACHINE ----------end of sample----------------- ;@TYPE tells the program what types of input to accept, such as int (integer), float, string, file (pop up File Open dialog box) and so on. TYPE is not necessary if the user can only make a choice between options already in the @CHOICE line. For @TYPE file, a button is created in the GUI which, when clicked, causes a dialog box to pop up so the user can choose the file; they could also simply type in the file path/name in the entry instead of using the dialog. @TYPE file can be followed by a wildcarded file name, such as *.nml or *mod.o (for EMCMOT, but wouldn't work with emcmotsim unless renamed or symlinked) ;make user select NML file ;@TYPE file *.nml ;@MIN is the minimum allowable value (int and float only), the program shouldn't accept anything less; put on screen for the user when they enter a value. ;@MAX - see @MIN ;@CHOICE - use a pop-up menu (or listbox) for this item. The first word after @CHOICE is the default. See also @OTHER ;@OTHER is used in the @CHOICE line. It is optional. If it is on the line, the user is allowed to type in something that isn't among the pre-defined choices. If @OTHER isn't present, they must choose from among the pre-defined choices. Not shown in above example: ;@CONVERSION_FACTOR can be used, for example, to convert from mm to inches, or to convert depending on a parameter already set within the file. It can only be used with numbers, and the user's input is multiplied or divided by this value before being written to the file. If a parameter is used which isn't within the current section, the section name must be prepended to its name. (below) examples: ;this would divide the user's input by 3.45 ;@CONVERSION_FACTOR / 3.45 ;multiply by LINEAR_UNITS in [TRAJ] section ;@CONVERSION_FACTOR * [TRAJ]LINEAR_UNITS ;@EQUALS - used to set one parameter identical to another. EQUALS can only be used by itself, and the program advances to the next parameter automatically. ;@EQUALS [TRAJ]LINEAR_UNITS ;@SKIP - like EQUALS, can only be used by itself. Causes program to skip over this parameter without changing it. ;@EXPERTISE - conditional SKIP. At startup, the program asks the user what level of tuning they want, such as beginner, intermediate (show more), expert (show all). Hides complicated stuff from beginners. In a block, defaults to beginner (always shown) if not used. ;a block including this line would only show at intermediate level or higher ;@EXPERTISE intermediate For any block, up to several keywords can be used; however if there aren't any keywords no error checking will be performed on the user's input. Some combinations don't make sense, such as "TYPE string" along with MIN or MAX, or "TYPE file" along with CHOICE (for this, use "TYPE string") I started writing a tcl script to work with this... I don't know when/if it will be done. Mark __________________________________ Do you Yahoo!? The New Yahoo! Shopping - with improved product search http://shopping.yahoo.com |