Added compatibility with python scripts

This commit is contained in:
jeffser 2024-10-06 22:16:06 -06:00
parent 4d529619d6
commit f5845e95e6
2 changed files with 9 additions and 7 deletions

View File

@ -108,9 +108,9 @@ class code_block(Gtk.Box):
copy_button = Gtk.Button(icon_name="edit-copy-symbolic", css_classes=["flat", "circular"], tooltip_text=_("Copy Message")) copy_button = Gtk.Button(icon_name="edit-copy-symbolic", css_classes=["flat", "circular"], tooltip_text=_("Copy Message"))
copy_button.connect("clicked", lambda *_: self.on_copy()) copy_button.connect("clicked", lambda *_: self.on_copy())
title_box.append(copy_button) title_box.append(copy_button)
if language_name.lower() == 'bash': if language_name and language_name.lower() in ['bash', 'python3']:
run_button = Gtk.Button(icon_name="execute-from-symbolic", css_classes=["flat", "circular"], tooltip_text=_("Run Script")) run_button = Gtk.Button(icon_name="execute-from-symbolic", css_classes=["flat", "circular"], tooltip_text=_("Run Script"))
run_button.connect("clicked", lambda *_: self.run_script()) run_button.connect("clicked", lambda *_: self.run_script(language_name))
title_box.append(run_button) title_box.append(run_button)
self.append(title_box) self.append(title_box)
self.append(Gtk.Separator()) self.append(Gtk.Separator())
@ -126,11 +126,11 @@ class code_block(Gtk.Box):
clipboard.set(text) clipboard.set(text)
window.show_toast(_("Code copied to the clipboard"), window.main_overlay) window.show_toast(_("Code copied to the clipboard"), window.main_overlay)
def run_script(self): def run_script(self, language_name):
logger.debug("Running script") logger.debug("Running script")
start = self.buffer.get_start_iter() start = self.buffer.get_start_iter()
end = self.buffer.get_end_iter() end = self.buffer.get_end_iter()
dialogs.run_script(window, self.buffer.get_text(start, end, False)) dialogs.run_script(window, self.buffer.get_text(start, end, False), language_name)
class attachment(Gtk.Button): class attachment(Gtk.Button):
__gtype_name__ = 'AlpacaAttachment' __gtype_name__ = 'AlpacaAttachment'

View File

@ -419,9 +419,11 @@ def attach_website(self, url):
# Run Script # Run Script
def run_script_response(self, dialog, task, script): def run_script_response(self, dialog, task, script, language_name):
if dialog.choose_finish(task) == "accept": if dialog.choose_finish(task) == "accept":
logger.info('Running: \n{}'.format(script)) logger.info('Running: \n{}'.format(script))
if language_name == 'python3':
script = 'echo "{}" | python3'.format(script.replace('"', '\\"'))
script += '; read -p "\n(Alpaca) {}"'.format(_('Press Enter to close...')) script += '; read -p "\n(Alpaca) {}"'.format(_('Press Enter to close...'))
using_flatpak = shutil.which('flatpak-spawn') using_flatpak = shutil.which('flatpak-spawn')
@ -460,7 +462,7 @@ def run_script_response(self, dialog, task, script):
except Exception as e: except Exception as e:
logger.error(f'Error running script on {terminal_to_use}: {e}') logger.error(f'Error running script on {terminal_to_use}: {e}')
def run_script(self, script:str): def run_script(self, script:str, language_name:str):
dialog = Adw.AlertDialog( dialog = Adw.AlertDialog(
heading=_("Run Script"), heading=_("Run Script"),
body=_("Make sure you understand what this script does before running it, Alpaca is not responsible for any damages to your device or data"), body=_("Make sure you understand what this script does before running it, Alpaca is not responsible for any damages to your device or data"),
@ -473,5 +475,5 @@ def run_script(self, script:str):
dialog.choose( dialog.choose(
parent = self, parent = self,
cancellable = None, cancellable = None,
callback = lambda dialog, task, script=script: run_script_response(self, dialog, task, script) callback = lambda dialog, task, script=script, language_name=language_name: run_script_response(self, dialog, task, script, language_name)
) )