(loadFrom "kiss-godot" "src/kiss_godot/Util.kiss") (prop &mut :ArchiveController controller (property default default)) (prop &mut :Null> shortcutHandler (property default null)) (method :Void showPrefixMap [:Map map] (throw "TODO Not implemented!")) (method :Void hidePrefixMap [] (throw "TODO Not implemented!")) (method :Null> playgroundSystem [] pgSystem) (method :Void enterText [:String prompt :String->Void resolve :Float maxLength] (displayMessage prompt) (let [lineEdit (new LineEdit)] (unless (= maxLength Math.POSITIVE_INFINITY) (set lineEdit.maxLength (Std.int maxLength))) (set rootNode.resolveString ->[:String text] { (rootNode.uiContainer.removeChild lineEdit) (displayMessage text) (resolve text) }) (lineEdit.connect "text_entered" rootNode "_on_LineEdit_text_entered") (rootNode.uiContainer.addChild lineEdit) (lineEdit.grabFocus))) (method :Void enterNumber [:String prompt :Float->Void resolve :Float min :Float max &opt :Null inStepsOf &opt :Null allowNaN] (displayMessage prompt) (let [spinBox (new SpinBox) nanButton (new Button) submitButton (new Button) resolve ->[:Float num] { (set rootNode.resolveFloat null) (rootNode.uiContainer.removeChild spinBox) (when allowNaN (rootNode.uiContainer.removeChild nanButton)) (rootNode.uiContainer.removeChild submitButton) (displayMessage "$num") (resolve num) }] (set rootNode.resolveFloat resolve) (set spinBox.minValue min) (set spinBox.maxValue max) (rootNode.uiContainer.addChild spinBox) (when allowNaN (set nanButton.text "NaN") (nanButton.connect "pressed" rootNode "_on_NaNButton_pressed") (rootNode.uiContainer.addChild nanButton)) (set submitButton.text "Submit") (submitButton.connect "pressed" rootNode "_on_SubmitNumberButton_pressed" (new godot.collections.Array (NativeArray.make spinBox))) (rootNode.uiContainer.addChild submitButton) (submitButton.grabFocus))) (method :Void chooseEntry [:String prompt :Archive archive :Entry->Void resolve] (throw "TODO Not implemented!")) (method :Void chooseEntries [:String prompt :Archive archive :Array->Void resolve :Int min :Float max] (throw "TODO Not implemented!")) (method :Void handleChanges [:Archive archive :ChangeSet changeSet] null) (method :Void displayMessage [:String message] (let [label (new Label)] (set label.text message) (rootNode.uiContainer.addChild label))) (method :Void reportError [:String error] (displayMessage "Error! $error")) (method :Void onSelectionChanged [:Array selectedEntries :Array lastSelectedEntries] (throw "TODO Not implemented!")) (method :Void choosePosition [:String prompt :Position->Void resolve] (displayMessage prompt) (set rootNode.resolvePosition resolve)) (method :Option cursorPosition [] (let [pos (.getMousePosition (rootNode.getViewport))] (Some (vector2ToPosition pos)))) (function :Position vector2ToPosition [:Vector2 pos] (object x pos.x y pos.y z 0.0)) (method :Void chooseBetweenStrings [:String prompt :Array choices :String->Void resolve] (throw "TODO Not implemented!")) (defNew [&prop :Archive archive &prop :RootNode rootNode] [ :EntryPanelSystem pgSystem (new EntryPanelSystem this rootNode) ])