From 2fb1214709404b901eccc9d6dd8852343b2f9f59 Mon Sep 17 00:00:00 2001 From: ebolam Date: Thu, 22 Sep 2022 13:21:27 -0400 Subject: [PATCH] Add delete for redo options --- aiserver.py | 7 +++++++ koboldai_settings.py | 12 ++++++++++++ static/koboldai.css | 6 ++++++ static/koboldai.js | 6 ++++++ 4 files changed, 31 insertions(+) diff --git a/aiserver.py b/aiserver.py index cec229da..66303695 100644 --- a/aiserver.py +++ b/aiserver.py @@ -7624,6 +7624,13 @@ def UI_2_Use_Option_Text(data): else: koboldai_vars.actions.use_option(int(data['option']), action_step=int(data['chunk'])) +#==================================================================# +# Event triggered when Option is Selected +#==================================================================# +@socketio.on('delete_option') +@logger.catch +def UI_2_delete_option(data): + koboldai_vars.actions.delete_option(int(data['option']), action_step=int(data['chunk'])) #==================================================================# # Event triggered when user clicks the submit button diff --git a/koboldai_settings.py b/koboldai_settings.py index f241f779..007571cf 100644 --- a/koboldai_settings.py +++ b/koboldai_settings.py @@ -1141,6 +1141,7 @@ class KoboldStoryRegister(object): process_variable_changes(self.socketio, "story", 'actions', {"id": pointer, 'action': self.actions[pointer]}, None) self.set_game_saved() + def set_action_in_ai(self, action_id, used=True): if 'In AI Input' in self.actions[action_id]: old = self.actions[action_id]['In AI Input'] @@ -1195,6 +1196,17 @@ class KoboldStoryRegister(object): self.action_count+=1 self.socketio.emit("var_changed", {"classname": "actions", "name": "Action Count", "old_value": None, "value":self.action_count}, broadcast=True, room="UI_2") process_variable_changes(self.socketio, "story", 'actions', {"id": action_step, 'action': self.actions[action_step]}, None) + self.clear_unused_options(pointer=action_step) + ignore = self.koboldai_vars.calc_ai_text() + self.set_game_saved() + + def delete_option(self, option_number, action_step=None): + if action_step is None: + action_step = self.action_count+1 + if action_step in self.actions: + if option_number < len(self.actions[action_step]['Options']): + del self.actions[action_step]['Options'][option_number] + process_variable_changes(self.socketio, "story", 'actions', {"id": action_step, 'action': self.actions[action_step]}, None) ignore = self.koboldai_vars.calc_ai_text() self.set_game_saved() diff --git a/static/koboldai.css b/static/koboldai.css index 2619e3e9..e946d3c1 100644 --- a/static/koboldai.css +++ b/static/koboldai.css @@ -1270,6 +1270,12 @@ body { grid-area: icon; padding-left: 10px; margin: auto auto auto auto; + display: flex; + flex-direction: column; +} + +.delete_option_icon { + font-size: 1.2em !important; } .sequence:hover { diff --git a/static/koboldai.js b/static/koboldai.js index 285fc76a..2b4cb45c 100644 --- a/static/koboldai.js +++ b/static/koboldai.js @@ -220,6 +220,12 @@ function create_options(data) { icon.classList.add("oi"); icon.setAttribute('data-glyph', "loop-circular"); iconcell.append(icon); + delete_icon = $e("span", iconcell, {"classes": ["material-icons-outlined", "cursor", 'delete_option_icon'], + "title": "delete option", 'option_id': i, + 'option_chunk': data.value.id, 'textContent': 'delete'}); + delete_icon.onclick = function () { + socket.emit("delete_option", {"chunk": this.getAttribute("option_chunk"), "option": this.getAttribute("option_id")}); + }; textcell.onclick = function () { socket.emit("Use Option Text", {"chunk": this.getAttribute("option_chunk"), "option": this.getAttribute("option_id")}); };