Added file preview before sending message

This commit is contained in:
jeffser 2024-07-08 13:08:10 -06:00
parent 5420bcb92d
commit 9ccf46663d
3 changed files with 32 additions and 15 deletions

View File

@ -150,11 +150,12 @@ def delete_model(self, model_name):
# REMOVE IMAGE | WORKS
def remove_attached_file_response(self, dialog, task, button):
def remove_attached_file_response(self, dialog, task, name):
if dialog.choose_finish(task) == 'remove':
self.remove_attached_file(button)
self.remove_attached_file(name)
def remove_attached_file(self, button):
def remove_attached_file(self, name):
self.file_preview_dialog.close()
dialog = Adw.AlertDialog(
heading=_("Remove Attachment?"),
body=_("Are you sure you want to remove attachment?"),
@ -166,7 +167,7 @@ def remove_attached_file(self, button):
dialog.choose(
parent = self,
cancellable = None,
callback = lambda dialog, task, button=button: remove_attached_file_response(self, dialog, task, button)
callback = lambda dialog, task, name=name: remove_attached_file_response(self, dialog, task, name)
)
# RECONNECT REMOTE | WORKS

View File

@ -107,6 +107,7 @@ class AlpacaWindow(Adw.ApplicationWindow):
model_tag_list_box = Gtk.Template.Child()
navigation_view_manage_models = Gtk.Template.Child()
file_preview_open_button = Gtk.Template.Child()
file_preview_remove_button = Gtk.Template.Child()
secondary_menu_button = Gtk.Template.Child()
model_searchbar = Gtk.Template.Child()
no_results_page = Gtk.Template.Child()
@ -488,9 +489,14 @@ class AlpacaWindow(Adw.ApplicationWindow):
self.editing_message = {"text_view": text_view, "id": id, "button_container": button_container, "footer": footer}
def preview_file(self, file_path, file_type):
def preview_file(self, file_path, file_type, presend_name):
file_path = file_path.replace("{selected_chat}", self.chats["selected_chat"])
content = self.get_content_of_file(file_path, file_type)
if presend_name:
self.file_preview_remove_button.set_visible(True)
self.file_preview_remove_button.connect('clicked', lambda button, name=presend_name : dialogs.remove_attached_file(self, name))
else:
self.file_preview_remove_button.set_visible(False)
if content:
buffer = self.file_preview_text_view.get_buffer()
buffer.delete(buffer.get_start_iter(), buffer.get_end_iter())
@ -688,7 +694,7 @@ Generate a title following these rules:
child=button_content
)
file_path = os.path.join(self.data_dir, "chats", "{selected_chat}", id, name)
button.connect("clicked", lambda button, file_path=file_path, file_type=file_type: self.preview_file(file_path, file_type))
button.connect("clicked", lambda button, file_path=file_path, file_type=file_type: self.preview_file(file_path, file_type, None))
file_container.append(button)
message_box.append(file_scroller)
@ -1330,17 +1336,18 @@ Generate a title following these rules:
text += f"\n- Page {i}\n{page.extract_text()}\n"
return text
def remove_attached_file(self, button):
del self.attachments[button.get_name()]
def remove_attached_file(self, name):
button = self.attachments[name]['button']
button.get_parent().remove(button)
del self.attachments[name]
if len(self.attachments) == 0: self.attachment_box.set_visible(False)
def attach_file(self, file_path, file_type):
name = self.generate_numbered_name(os.path.basename(file_path), self.attachments.keys())
file_name = self.generate_numbered_name(os.path.basename(file_path), self.attachments.keys())
content = self.get_content_of_file(file_path, file_type)
if content:
button_content = Adw.ButtonContent(
label=name,
label=file_name,
icon_name={
"image": "image-x-generic-symbolic",
"plain_text": "document-text-symbolic",
@ -1352,13 +1359,14 @@ Generate a title following these rules:
button = Gtk.Button(
vexpand=True,
valign=3,
name=name,
name=file_name,
css_classes=["flat"],
tooltip_text=name,
tooltip_text=file_name,
child=button_content
)
self.attachments[name] = {"path": file_path, "type": file_type, "content": content, "button": button}
button.connect("clicked", lambda button: dialogs.remove_attached_file(self, button))
self.attachments[file_name] = {"path": file_path, "type": file_type, "content": content, "button": button}
#button.connect("clicked", lambda button: dialogs.remove_attached_file(self, button))
button.connect("clicked", lambda button : self.preview_file(file_path, file_type, file_name))
self.attachment_container.append(button)
self.attachment_box.set_visible(True)

View File

@ -744,12 +744,20 @@
<child type="start">
<object class="GtkButton" id="file_preview_open_button">
<signal name="clicked" handler="link_button_handler"/>
<property name="tooltip-text" translatable="yes">Open with Default App</property>
<property name="tooltip-text" translatable="yes">Open With Default App</property>
<property name="vexpand">false</property>
<property name="valign">3</property>
<property name="icon-name">share-symbolic</property>
</object>
</child>
<child type="start">
<object class="GtkButton" id="file_preview_remove_button">
<property name="tooltip-text" translatable="yes">Remove Attachment</property>
<property name="vexpand">false</property>
<property name="valign">3</property>
<property name="icon-name">user-trash-symbolic</property>
</object>
</child>
</object>
</child>
<child>