def find_volume_by_name( volume_name: str, not_found_msg: str = "Could not find disk '%s'. Do you want to locate it yourself?", found_several_msg: str = "Found several '%s' disks. Do you want to choose one yourself?", ) -> Optional[str]: volumes = find_volumes_by_name(volume_name) if len(volumes) == 1: return volumes[0] else: if len(volumes) == 0: msg = not_found_msg % volume_name else: msg = found_several_msg % volume_name from tkinter.messagebox import askyesno from thonny.ui_utils import askdirectory if askyesno("Can't find suitable disk", msg, parent=get_workbench()): path = askdirectory(master=get_workbench()) if path: return path return None
def find_volume_by_name( volume_name: str, not_found_msg: Optional[str] = None, found_several_msg: Optional[str] = None, parent=None, ) -> Optional[str]: from thonny.languages import tr # Can't translate in the header as _ may not be available at import time if not_found_msg is None: not_found_msg = tr("Could not find disk '%s'. Do you want to locate it yourself?") if found_several_msg is None: found_several_msg = tr("Found several '%s' disks. Do you want to choose one yourself?") volumes = find_volumes_by_name(volume_name) if len(volumes) == 1: return volumes[0] else: if len(volumes) == 0: msg = not_found_msg % volume_name else: msg = found_several_msg % volume_name import tkinter as tk from tkinter.messagebox import askyesno from thonny.ui_utils import askdirectory if askyesno(tr("Can't find suitable disk"), msg, master=parent): path = askdirectory(parent=parent) if path: return path return None
def _create_venv(self): path = askdirectory( parent=self.winfo_toplevel(), initialdir=None, title=tr( "Select an existing virtual environemnt or an empty directory for new virtual environment" ), ) assert os.path.isdir(path) path = normpath_with_actual_case(path) if not os.listdir(path): proc = subprocess.Popen( [running.get_interpreter_for_subprocess(), "-m", "venv", path], stdin=None, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines=True, ) dlg = SubprocessDialog(self, proc, tr("Creating virtual environment")) ui_utils.show_dialog(dlg) if running_on_windows(): exe_path = normpath_with_actual_case( os.path.join(path, "Scripts", "python.exe")) else: exe_path = os.path.join(path, "bin", "python3") if os.path.exists(exe_path): self._configuration_variable.set(exe_path) else: # Undefined error handling. pass
def _create_venv(self, event=None): if not _check_venv_installed(self): return messagebox.showinfo( "Creating new virtual environment", "After clicking 'OK' you need to choose an empty directory, " "which will be the root of your new virtual environment.", parent=self, ) path = None while True: path = askdirectory( parent=self.winfo_toplevel(), initialdir=path, title=tr("Select empty directory for new virtual environment"), ) if not path: return if os.listdir(path): messagebox.showerror( tr("Bad directory"), tr("Selected directory is not empty.\nSelect another or cancel." ), master=self, ) else: break assert os.path.isdir(path) path = normpath_with_actual_case(path) proc = subprocess.Popen( [running.get_interpreter_for_subprocess(), "-m", "venv", path], stdin=None, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines=True, ) from thonny.workdlg import SubprocessDialog dlg = SubprocessDialog(self, proc, tr("Creating virtual environment"), autostart=True) ui_utils.show_dialog(dlg) if running_on_windows(): exe_path = normpath_with_actual_case( os.path.join(path, "Scripts", "python.exe")) else: exe_path = os.path.join(path, "bin", "python3") if os.path.exists(exe_path): self._configuration_variable.set(exe_path)
def _create_venv(self): path = None while True: path = askdirectory( master=self, initialdir=path, title=_("Select empty directory for new virtual environment"), ) if not path: return if os.listdir(path): messagebox.showerror( _("Bad directory"), _("Selected directory is not empty.\nSelect another or cancel." ), parent=get_workbench(), ) else: break assert os.path.isdir(path) path = normpath_with_actual_case(path) proc = subprocess.Popen( [running.get_frontend_python(), "-m", "venv", path], stdin=None, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines=True, ) dlg = SubprocessDialog(self, proc, _("Creating virtual environment")) ui_utils.show_dialog(dlg) if running_on_windows(): exe_path = normpath_with_actual_case( os.path.join(path, "Scripts", "python.exe")) else: exe_path = os.path.join(path, "bin", "python3") if os.path.exists(exe_path): self._configuration_variable.set(exe_path)