Select File | Preferences... from the menu to display the runtime environment's configuration dialog. The dialog lets you adjust various display, network layouting and animation options.
The General tab can be used to set the default user interface behavior. It is possible to set whether namespaces should be stripped off the displayed class names, and how often the user interface will be updated while the simulation runs in Express mode.
The Logs tab can be used to set the default logging behavior, such as the log level of modules that do not override it, the prefix format of event banners, and the size limit of the log buffer.
Qtenv provides automatic layouting for submodules that do not have their locations specified in the NED files. The layouting algorithm can be fine-tuned on the Layouting page of this dialog.
Qtenv provides automatic animation when you run the simulation. You can fine-tune the animation settings using the Animation page of the settings dialog. If you do not need all visual feedback Qtenv provides, you can selectively turn off some of the features:
sendDirect()
method call is executed.
Enter_Method()
macro.
The Filtering page of the dialog serves two purposes. First, it lets you filter the contents of the Timeline. You can hide all self-messages (timers), or all non-self messages, and you can further reduce the number of messages shown on the timeline by also hiding the non-animated messages, explained below.
Second, you can suppress the animation of certain messages. For example, when your focus is routing protocol messages, you can suppress the animation of data traffic.
The text box lets you specify several filters, one per line. You can filter messages by name, class name, or by any other property that appears in the Fields page of the Object Inspector when you focus it on the given message object.
For object names, wildcards ("?"
, "*"
) are allowed. "{a-exz}"
matches any character in the range
"a".."e"
plus "x"
and "z"
. You can match numbers: "job{128..191}"
will match "job128"
, "job129"
, ...,
"job191"
. "job{128..}"
and "job{..191}"
are also understood. You can combine patterns with AND
, OR
and
NOT
and parentheses (lowercase and, or, not are also acceptable). You can match against other object fields
such as message length, message kind, etc. with the syntax "fieldname(pattern)"
. Put quotation marks
around a pattern if it contains parentheses.
Some examples:
m*
: matches any object whose name begins with "m"
m* AND *-{0..250}
: matches any object whose name begins with "m" and ends with a dash and a
number between 0 and 250
not *timer*
: matches any object whose name does not contain the substring "timer"
not (*timer* or *timeout*)
: matches any object whose name contains neither "timer" nor
"timeout"
kind(3) or kind({7..9})
: matches messages with message kind equal to 3, 7, 8 or 9
className(IP*) and data-*
: matches objects whose class name begins with "IP" and name begins
with "data-"
not className(cMessage) and byteLength({1500..})
: matches objects whose class is not cMessage
and whose byteLength is at least 1500
"or" or "and" or "not" or "*(*" or "msg(ACK)"
: quotation marks needed when pattern is a
reserved word or contains parentheses (note: msg(ACK) without parentheses would be interpreted as an
object having an "msg" attribute with the value "ACK"!).
There is also a per-module setting the models can adjust programatically
that can prevent any animations taking place when inspecting a given module
(setBuiltinAnimationsAllowed()
).
The Fonts page of the settings dialog lets you select the typeface and font size for various user interface elements.
Settings are stored in .qtenvrc
files. There are two .qtenvrc
files: one is stored
in the current directory and contains project-specific settings like the list of open
inspectors; the other is saved into the user's home directory and contains global settings.
.qtenvrc
file.