Better handling of missing files
This commit is contained in:
parent
4ececd850b
commit
2d8cb68628
@ -414,11 +414,12 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
|||||||
|
|
||||||
def preview_file(self, file_path, file_type):
|
def preview_file(self, file_path, file_type):
|
||||||
content = self.get_content_of_file(file_path, file_type)
|
content = self.get_content_of_file(file_path, file_type)
|
||||||
buffer = self.file_preview_text_view.get_buffer()
|
if content:
|
||||||
buffer.delete(buffer.get_start_iter(), buffer.get_end_iter())
|
buffer = self.file_preview_text_view.get_buffer()
|
||||||
buffer.insert(buffer.get_start_iter(), content, len(content))
|
buffer.delete(buffer.get_start_iter(), buffer.get_end_iter())
|
||||||
self.file_preview_dialog.set_title(os.path.basename(file_path))
|
buffer.insert(buffer.get_start_iter(), content, len(content))
|
||||||
self.file_preview_dialog.present(self)
|
self.file_preview_dialog.set_title(os.path.basename(file_path))
|
||||||
|
self.file_preview_dialog.present(self)
|
||||||
|
|
||||||
def convert_history_to_ollama(self):
|
def convert_history_to_ollama(self):
|
||||||
messages = []
|
messages = []
|
||||||
@ -429,13 +430,15 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
|||||||
new_message['content'] = ''
|
new_message['content'] = ''
|
||||||
for name, file_type in message['files'].items():
|
for name, file_type in message['files'].items():
|
||||||
file_path = os.path.join(self.data_dir, "chats", self.chats['selected_chat'], id, name)
|
file_path = os.path.join(self.data_dir, "chats", self.chats['selected_chat'], id, name)
|
||||||
new_message['content'] += f"```[{name}]\n{self.get_content_of_file(file_path, file_type)}\n```"
|
file_data = self.get_content_of_file(file_path, file_type)
|
||||||
|
if file_data: new_message['content'] += f"```[{name}]\n{file_data}\n```"
|
||||||
new_message['content'] += message['content']
|
new_message['content'] += message['content']
|
||||||
if 'images' in message and len(message['images']) > 0:
|
if 'images' in message and len(message['images']) > 0:
|
||||||
new_message['images'] = []
|
new_message['images'] = []
|
||||||
for name in message['images']:
|
for name in message['images']:
|
||||||
file_path = os.path.join(self.data_dir, "chats", self.chats['selected_chat'], id, name)
|
file_path = os.path.join(self.data_dir, "chats", self.chats['selected_chat'], id, name)
|
||||||
new_message['images'].append(self.get_content_of_file(file_path, 'image'))
|
image_data = self.get_content_of_file(file_path, 'image')
|
||||||
|
if image_data: new_message['images'].append(image_data)
|
||||||
messages.append(new_message)
|
messages.append(new_message)
|
||||||
return messages
|
return messages
|
||||||
|
|
||||||
@ -497,8 +500,9 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
|||||||
child=image_container
|
child=image_container
|
||||||
)
|
)
|
||||||
for image in images:
|
for image in images:
|
||||||
if os.path.exists(os.path.join(self.data_dir, "chats", self.chats['selected_chat'], id, image)):
|
raw_data = self.get_content_of_file(os.path.join(self.data_dir, "chats", self.chats['selected_chat'], id, image), "image")
|
||||||
image_data = base64.b64decode(self.get_content_of_file(os.path.join(self.data_dir, "chats", self.chats['selected_chat'], id, image), "image"))
|
if raw_data:
|
||||||
|
image_data = base64.b64decode(raw_data)
|
||||||
loader = GdkPixbuf.PixbufLoader.new()
|
loader = GdkPixbuf.PixbufLoader.new()
|
||||||
loader.write(image_data)
|
loader.write(image_data)
|
||||||
loader.close()
|
loader.close()
|
||||||
@ -1104,6 +1108,7 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
|||||||
self.verify_connection()
|
self.verify_connection()
|
||||||
|
|
||||||
def get_content_of_file(self, file_path, file_type):
|
def get_content_of_file(self, file_path, file_type):
|
||||||
|
if not os.path.exists(file_path) return None
|
||||||
if file_type == 'image':
|
if file_type == 'image':
|
||||||
try:
|
try:
|
||||||
with Image.open(file_path) as img:
|
with Image.open(file_path) as img:
|
||||||
@ -1134,26 +1139,26 @@ class AlpacaWindow(Adw.ApplicationWindow):
|
|||||||
def attach_file(self, file_path, file_type):
|
def attach_file(self, file_path, file_type):
|
||||||
name = self.generate_numbered_name(os.path.basename(file_path), self.attachments.keys())
|
name = self.generate_numbered_name(os.path.basename(file_path), self.attachments.keys())
|
||||||
content = self.get_content_of_file(file_path, file_type)
|
content = self.get_content_of_file(file_path, file_type)
|
||||||
|
if content:
|
||||||
|
shown_name='.'.join(name.split(".")[:-1])[:20] + (name[20:] and '..') + f".{name.split('.')[-1]}"
|
||||||
|
|
||||||
shown_name='.'.join(name.split(".")[:-1])[:20] + (name[20:] and '..') + f".{name.split('.')[-1]}"
|
button_content = Adw.ButtonContent(
|
||||||
|
label=shown_name,
|
||||||
|
icon_name={"image": "image-x-generic-symbolic", "plain_text": "document-text-symbolic"}[file_type]
|
||||||
|
)
|
||||||
|
button = Gtk.Button(
|
||||||
|
vexpand=True,
|
||||||
|
valign=3,
|
||||||
|
name=name,
|
||||||
|
css_classes=["flat"],
|
||||||
|
tooltip_text=name,
|
||||||
|
child=button_content
|
||||||
|
)
|
||||||
|
|
||||||
button_content = Adw.ButtonContent(
|
self.attachments[name] = {"path": file_path, "type": file_type, "content": content, "button": button}
|
||||||
label=shown_name,
|
button.connect("clicked", lambda button: dialogs.remove_attached_file(self, button))
|
||||||
icon_name={"image": "image-x-generic-symbolic", "plain_text": "document-text-symbolic"}[file_type]
|
self.attachment_container.append(button)
|
||||||
)
|
self.attachment_box.set_visible(True)
|
||||||
button = Gtk.Button(
|
|
||||||
vexpand=True,
|
|
||||||
valign=3,
|
|
||||||
name=name,
|
|
||||||
css_classes=["flat"],
|
|
||||||
tooltip_text=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.attachment_container.append(button)
|
|
||||||
self.attachment_box.set_visible(True)
|
|
||||||
|
|
||||||
|
|
||||||
def __init__(self, **kwargs):
|
def __init__(self, **kwargs):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user