Fixed send/stop buttons
This commit is contained in:
parent
dd5351a3de
commit
07a12ba41f
@ -73,6 +73,7 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
|||||||
chat_window = Gtk.Template.Child()
|
chat_window = Gtk.Template.Child()
|
||||||
message_text_view = Gtk.Template.Child()
|
message_text_view = Gtk.Template.Child()
|
||||||
send_button = Gtk.Template.Child()
|
send_button = Gtk.Template.Child()
|
||||||
|
stop_button = Gtk.Template.Child()
|
||||||
image_button = Gtk.Template.Child()
|
image_button = Gtk.Template.Child()
|
||||||
file_filter_image = Gtk.Template.Child()
|
file_filter_image = Gtk.Template.Child()
|
||||||
file_filter_json = Gtk.Template.Child()
|
file_filter_json = Gtk.Template.Child()
|
||||||
@ -139,56 +140,53 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
|||||||
self.attached_image = {"path": None, "base64": None}
|
self.attached_image = {"path": None, "base64": None}
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@Gtk.Template.Callback()
|
||||||
|
def stop_message(self, button=None):
|
||||||
|
if self.loading_spinner: self.chat_container.remove(self.loading_spinner)
|
||||||
|
if self.verify_if_image_can_be_used(): self.image_button.set_sensitive(True)
|
||||||
|
self.image_button.set_css_classes(["circular"])
|
||||||
|
self.image_button.get_child().set_icon_name("image-x-generic-symbolic")
|
||||||
|
self.attached_image = {"path": None, "base64": None}
|
||||||
|
self.toggle_ui_sensitive(True)
|
||||||
|
self.switch_send_stop_button()
|
||||||
|
self.bot_message = None
|
||||||
|
self.bot_message_box = None
|
||||||
|
self.bot_message_view = None
|
||||||
|
|
||||||
@Gtk.Template.Callback()
|
@Gtk.Template.Callback()
|
||||||
def send_message(self, button=None):
|
def send_message(self, button=None):
|
||||||
if button and self.bot_message: #STOP BUTTON
|
if not self.message_text_view.get_buffer().get_text(self.message_text_view.get_buffer().get_start_iter(), self.message_text_view.get_buffer().get_end_iter(), False): return
|
||||||
if self.loading_spinner: self.chat_container.remove(self.loading_spinner)
|
current_model = self.model_drop_down.get_selected_item()
|
||||||
if self.verify_if_image_can_be_used(): self.image_button.set_sensitive(True)
|
if current_model is None:
|
||||||
self.image_button.set_css_classes(["circular"])
|
self.show_toast("info", 0, self.main_overlay)
|
||||||
self.image_button.get_child().set_icon_name("image-x-generic-symbolic")
|
return
|
||||||
self.attached_image = {"path": None, "base64": None}
|
formated_datetime = datetime.now().strftime("%Y/%m/%d %H:%M")
|
||||||
self.toggle_ui_sensitive(True)
|
self.chats["chats"][self.chats["selected_chat"]]["messages"].append({
|
||||||
self.send_button.set_css_classes(["suggested-action"])
|
"role": "user",
|
||||||
self.send_button.get_child().set_label("Send")
|
"model": "User",
|
||||||
self.send_button.get_child().set_icon_name("send-to-symbolic")
|
"date": formated_datetime,
|
||||||
self.bot_message = None
|
"content": self.message_text_view.get_buffer().get_text(self.message_text_view.get_buffer().get_start_iter(), self.message_text_view.get_buffer().get_end_iter(), False)
|
||||||
self.bot_message_box = None
|
})
|
||||||
self.bot_message_view = None
|
data = {
|
||||||
else:
|
"model": current_model.get_string(),
|
||||||
if not self.message_text_view.get_buffer().get_text(self.message_text_view.get_buffer().get_start_iter(), self.message_text_view.get_buffer().get_end_iter(), False): return
|
"messages": self.chats["chats"][self.chats["selected_chat"]]["messages"],
|
||||||
current_model = self.model_drop_down.get_selected_item()
|
"options": {"temperature": self.model_tweaks["temperature"], "seed": self.model_tweaks["seed"]},
|
||||||
if current_model is None:
|
"keep_alive": f"{self.model_tweaks['keep_alive']}m"
|
||||||
self.show_toast("info", 0, self.main_overlay)
|
}
|
||||||
return
|
if self.verify_if_image_can_be_used() and self.attached_image["base64"] is not None:
|
||||||
formated_datetime = datetime.now().strftime("%Y/%m/%d %H:%M")
|
data["messages"][-1]["images"] = [self.attached_image["base64"]]
|
||||||
self.chats["chats"][self.chats["selected_chat"]]["messages"].append({
|
self.switch_send_stop_button()
|
||||||
"role": "user",
|
self.toggle_ui_sensitive(False)
|
||||||
"model": "User",
|
self.image_button.set_sensitive(False)
|
||||||
"date": formated_datetime,
|
|
||||||
"content": self.message_text_view.get_buffer().get_text(self.message_text_view.get_buffer().get_start_iter(), self.message_text_view.get_buffer().get_end_iter(), False)
|
|
||||||
})
|
|
||||||
data = {
|
|
||||||
"model": current_model.get_string(),
|
|
||||||
"messages": self.chats["chats"][self.chats["selected_chat"]]["messages"],
|
|
||||||
"options": {"temperature": self.model_tweaks["temperature"], "seed": self.model_tweaks["seed"]},
|
|
||||||
"keep_alive": f"{self.model_tweaks['keep_alive']}m"
|
|
||||||
}
|
|
||||||
if self.verify_if_image_can_be_used() and self.attached_image["base64"] is not None:
|
|
||||||
data["messages"][-1]["images"] = [self.attached_image["base64"]]
|
|
||||||
self.send_button.set_css_classes(["destructive-action"])
|
|
||||||
self.send_button.get_child().set_label("Stop")
|
|
||||||
self.send_button.get_child().set_icon_name("edit-delete-symbolic")
|
|
||||||
self.toggle_ui_sensitive(False)
|
|
||||||
self.image_button.set_sensitive(False)
|
|
||||||
|
|
||||||
self.show_message(self.message_text_view.get_buffer().get_text(self.message_text_view.get_buffer().get_start_iter(), self.message_text_view.get_buffer().get_end_iter(), False), False, f"\n\n<small>{formated_datetime}</small>", self.attached_image["base64"])
|
self.show_message(self.message_text_view.get_buffer().get_text(self.message_text_view.get_buffer().get_start_iter(), self.message_text_view.get_buffer().get_end_iter(), False), False, f"\n\n<small>{formated_datetime}</small>", self.attached_image["base64"])
|
||||||
self.message_text_view.get_buffer().set_text("", 0)
|
self.message_text_view.get_buffer().set_text("", 0)
|
||||||
self.loading_spinner = Gtk.Spinner(spinning=True, margin_top=12, margin_bottom=12, hexpand=True)
|
self.loading_spinner = Gtk.Spinner(spinning=True, margin_top=12, margin_bottom=12, hexpand=True)
|
||||||
self.chat_container.append(self.loading_spinner)
|
self.chat_container.append(self.loading_spinner)
|
||||||
self.show_message("", True)
|
self.show_message("", True)
|
||||||
|
|
||||||
thread = threading.Thread(target=self.run_message, args=(data['messages'], data['model']))
|
thread = threading.Thread(target=self.run_message, args=(data['messages'], data['model']))
|
||||||
thread.start()
|
thread.start()
|
||||||
|
|
||||||
@Gtk.Template.Callback()
|
@Gtk.Template.Callback()
|
||||||
def manage_models_button_activate(self, button=None):
|
def manage_models_button_activate(self, button=None):
|
||||||
@ -549,12 +547,14 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
|||||||
for element in [self.chat_list_box, self.export_chat_button, self.import_chat_button, self.add_chat_button]:
|
for element in [self.chat_list_box, self.export_chat_button, self.import_chat_button, self.add_chat_button]:
|
||||||
element.set_sensitive(status)
|
element.set_sensitive(status)
|
||||||
|
|
||||||
|
def switch_send_stop_button(self):
|
||||||
|
self.stop_button.set_visible(self.send_button.get_visible())
|
||||||
|
self.send_button.set_visible(not self.send_button.get_visible())
|
||||||
|
|
||||||
def run_message(self, messages, model):
|
def run_message(self, messages, model):
|
||||||
response = connection_handler.stream_post(f"{connection_handler.url}/api/chat", data=json.dumps({"model": model, "messages": messages}), callback=self.update_bot_message)
|
response = connection_handler.stream_post(f"{connection_handler.url}/api/chat", data=json.dumps({"model": model, "messages": messages}), callback=self.update_bot_message)
|
||||||
GLib.idle_add(self.add_code_blocks)
|
GLib.idle_add(self.add_code_blocks)
|
||||||
GLib.idle_add(self.send_button.set_css_classes, ["suggested-action"])
|
GLib.idle_add(self.switch_send_stop_button)
|
||||||
GLib.idle_add(self.send_button.get_child().set_label, "Send")
|
|
||||||
GLib.idle_add(self.send_button.get_child().set_icon_name, "send-to-symbolic")
|
|
||||||
GLib.idle_add(self.toggle_ui_sensitive, True)
|
GLib.idle_add(self.toggle_ui_sensitive, True)
|
||||||
if self.verify_if_image_can_be_used(): GLib.idle_add(self.image_button.set_sensitive, True)
|
if self.verify_if_image_can_be_used(): GLib.idle_add(self.image_button.set_sensitive, True)
|
||||||
GLib.idle_add(self.image_button.set_css_classes, ["circular"])
|
GLib.idle_add(self.image_button.set_css_classes, ["circular"])
|
||||||
|
@ -240,6 +240,23 @@
|
|||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="stop_button">
|
||||||
|
<signal name="clicked" handler="stop_message"/>
|
||||||
|
<property name="vexpand">false</property>
|
||||||
|
<property name="valign">3</property>
|
||||||
|
<property name="visible">false</property>
|
||||||
|
<style>
|
||||||
|
<class name="destructive-action"/>
|
||||||
|
<class name="circular"/>
|
||||||
|
</style>
|
||||||
|
<child>
|
||||||
|
<object class="AdwButtonContent">
|
||||||
|
<property name="icon-name">edit-delete-symbolic</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user