import QtQuick 2.4 import FlightGear.Launcher 1.0 import "." SettingControl { id: root implicitHeight: col.height + Style.margin * 2 readonly property string placeholder: "--option=value --prop:/sim/name=value" property alias value: edit.text option: "xxx" // non-empty value so apply() is called property string defaultValue: "" // needed to type save/restore logic to string Column { id: col y: Style.margin width: parent.width spacing: Style.margin SettingDescription { id: description enabled: root.enabled text: qsTr("Enter additional command-line arguments if any are required. " + "See here " + "for documentation on possible arguments."); width: parent.width } SettingDescription { id: warningText enabled: root.enabled visible: tokenizer.haveUnsupportedArgs width: parent.width text: qsTr("Warning: specifying fg-root, fg-aircraft, fg-scenery or fg-home " + "using this section is not recommended, and may cause problem or prevent the simulator from running. " + "Please use the add-ons page to setup scenery and aircrft directories, and the 'Select data files location' " + "menu item to change the root data directory."); } SettingDescription { id: positionalArgsText enabled: root.enabled visible: tokenizer.havePositionalArgs width: parent.width text: qsTr("Note: you have entered arguments relating to the startup location below. " + "To prevent problems caused by conflicting settings, the values entered on the location " + "page (for example, airport or altitude) will be ignored."); } Rectangle { id: editFrame height: edit.height + Style.margin border.color: edit.activeFocus ? Style.frameColor : Style.minorFrameColor border.width: 1 width: parent.width TextEdit { id: edit enabled: root.enabled anchors.verticalCenter: parent.verticalCenter anchors.left: parent.left anchors.right: parent.right anchors.margins: Style.margin height: Math.max(Style.strutSize * 4, implicitHeight) textFormat: TextEdit.PlainText font.family: "Courier" selectByMouse: true wrapMode: TextEdit.WordWrap Text { id: placeholder visible: (edit.text.length == 0) && !edit.activeFocus text: root.placeholder color: Style.baseTextColor } } } } function apply() { var tokens = tokenizer.tokens; for (var i = 0; i < tokens.length; i++) { var tk = tokens[i]; if (tk.arg.substring(0, 5) === "prop:") { _config.setProperty(tk.arg.substring(5), tk.value, LaunchConfig.ExtraArgs); } else { _config.setArg(tk.arg, tk.value, LaunchConfig.ExtraArgs); } } } Binding { target: _location property: "skipFromArgs" value: tokenizer.havePositionalArgs } ArgumentTokenizer { id: tokenizer argString: edit.text } }