improve pasting

This commit is contained in:
joshuaboud 2021-12-15 17:42:21 -04:00
parent 78b9d7bf4a
commit 765fdff846
No known key found for this signature in database
GPG Key ID: 17EFB59E2A8BF50E
2 changed files with 113 additions and 84 deletions

View File

@ -676,6 +676,25 @@ export class NavWindow {
keepers.push(response)
}
proc.input(JSON.stringify(keepers) + "\n", true);
} else if (payload.hasOwnProperty("choices")) {
let choices = {};
for (let choice of payload["choices"]) {
choices[choice[0]] = {
label: choice[1],
internal_name: choice[0],
type: "radio",
default: false
}
}
choices[payload["choices"][0][0]].default = true;
this.stop_load();
let response = await this.modal_prompt.prompt(payload["message"], choices);
this.start_load();
if (response === null) {
proc.input(JSON.stringify("abort") + "\n");
return;
}
proc.input(JSON.stringify(response) + "\n", true);
} else {
var user_response = await this.modal_prompt.confirm(payload["message"]);
proc.input(JSON.stringify(user_response) + "\n", true);

View File

@ -28,13 +28,15 @@ from optparse import OptionParser
import json
import subprocess
def prompt_user(message, wants_response, conflicts = None):
def prompt_user(message, wants_response, conflicts = None, choices = None):
payload = {
"wants-response": wants_response,
"message": message
}
if conflicts != None:
payload["conflicts"] = conflicts
if choices != None:
payload["choices"] = choices
print(json.dumps(payload) + "\n")
if wants_response:
response = json.loads(input())
@ -74,8 +76,16 @@ def filter_existing(args, cwd):
dest = args[-1]
(conflicts, non_conflicts) = recursive_get_conflicts(sources, cwd, dest)
if len(conflicts):
choice = prompt_user("Conflicts Found", True, choices=[("skip-conflicts", "Skip Conflicts"), ("select", "Overwrite Selectively"), ("overwrite", "Overwrite All")])
if choice == "overwrite":
non_conflicts.extend(map(lambda x: x[0], conflicts))
elif choice == "select":
conflicts = prompt_user("Overwrite?", True, conflicts)
non_conflicts.extend(conflicts)
elif choice == "skip-conflicts":
pass
else: # cancelled
sys.exit(0)
if not len(non_conflicts):
sys.exit(0) # exit if nothing to copy
filtered_args = [*split_paths_at_cwd(non_conflicts, cwd), dest]