def overwrite(device, project): # prompt full save/ARE YOU SURE ABOUT THAT? prompt = Menu("Are you sure about that?", [("yes", nothing), ("no", nothing)]) sure = device.dispMenu(prompt, 1) if sure == "no": return False if is_connected(): savdir = path.join(homedir, "projects", project) # mkdir(newdir) mounted = mountdevice() if not mounted: device.dispError(["Dear OP-1,", "Where Art Thou"]) return False # device.dispProgress("saving Tape...", 0) # copy_and_overwrite("/media/op1/tape", savdir+"tape") # device.dispProgress("saving Synth...", 0.6) # copy_and_overwrite("/media/op1/synth/user", savdir+"synth/user") # device.dispProgress("saving Drums...", 0.8) # copy_and_overwrite("/media/op1/drum/user", savdir+"drum/user") device.dispProgress("saving Tape...", 0) tapeDir = path.join(op1path, "tape") for i, tape in enumerate(os.listdir(tapeDir)): copy_and_overwrite(path.join(tapeDir, tape), path.join(savdir, "tape", tape)) device.dispProgress("saving Tape...", 0.2 * i) device.dispProgress("saving Synth...", 0.8) synthDir = path.join(op1path, "synth", "user") for i, synth in enumerate(os.listdir(synthDir)): copy_and_overwrite(path.join(synthDir, synth), path.join(savdir, "synth", "user", synth)) device.dispProgress("saving Drums...", 0.9) drumDir = path.join(op1path, "drum", "user") for i, drum in enumerate(os.listdir(drumDir)): copy_and_overwrite(path.join(drumDir, drum), path.join(savdir, "drum", "user", drum)) print("copy abgeschlossen") unmounted = unmountdevice() if not unmounted: device.dispError(["unmount failed", "RIP in Pepperoni"]) return False device.dispProgress("successfully saved", 1) time.sleep(0.5) return True else: device.dispError(["404", "OP-1 not found"]) return False
def wifiSettings(device: Device, val): menu = Menu( "Wi-Fi", [ ("connect to new network", wifiConnect), ("connect to saved network", nothing), ], ) device.dispMenu(menu)
def makeFileBrowser(self): directoryList = [("..", self.changeDir)] directoryList.extend( [ (x.basename, self.changeDir) for x in self.f.dirs if not x.basename.startswith(".") ] ) directoryList.extend([(x.basename, self.nothing) for x in self.f.files]) fileMenu = Menu(self.f.path, directoryList) self.device.dispMenu(fileMenu)
def saveCaller(device, val): directory = homedir + "/projects/" projects = [] for filename in os.listdir(directory): projects.append(filename) projects.sort() save = Menu("Save Project", [("NEW PROJECT", saveNew)] + [(p, overwrite) for p in projects]) device.dispMenu(save)
def load(device, project): prompt = Menu("Are you sure about that?", [("yes", nothing), ("no", nothing)]) sure = device.dispMenu(prompt, 1) if sure == "no": return False if is_connected(): loaddir = path.join(homedir, "projects", project) # mkdir(newdir) mounted = mountdevice() if not mounted: device.dispError(["Dear OP-1,", "Where Art Thou"]) return False device.dispProgress("loading Tape...", 0) for i, tape in enumerate(os.listdir(path.join(loaddir, "tape"))): copy_and_overwrite(path.join(loaddir, "tape", tape), path.join(op1path, "tape", tape)) device.dispProgress("loading Tape...", 0.2 * i) # device.dispProgress("loading Synth...", 0.8) # for i, synth in enumerate(os.listdir(loaddir+"synth/user/")): # copy_and_overwrite(loaddir+"synth/user/"+synth, "/media/op1/synth/user/"+synth) # device.dispProgress("loading Drums...", 0.9) # for i, drum in enumerate(os.listdir(loaddir+"drum/user/")): # copy_and_overwrite(loaddir+"drum/user/"+drum, "/media/op1/drum/user/"+drum) print("load abgeschlossen") unmounted = unmountdevice() if not unmounted: device.dispError(["unmount failed", "RIP in Pepperoni"]) return False device.dispProgress("successfully loaded", 1) time.sleep(0.5) return True else: device.dispError(["404", " OP-1 not found"]) return False
def samplepackCaller(device, val): directory = homedir + "/samplepacks/" samplepacks = [] for filename in os.listdir(directory): samplepacks.append(filename) samplepacks.sort() if len(samplepacks) == 0: samplepacks.append("no samplepacks found") actions = [nothing] else: actions = [load] * len(samplepacks) samples = Menu("Samplepacks", zip(samplepacks, actions)) device.dispMenu(samples)
def loadCaller(device, val): directory = homedir + "/projects/" projects = [] for filename in os.listdir(directory): projects.append(filename) projects.sort() if len(projects) == 0: projects.append("no projects found", nothing) else: projects = [(p, load) for p in projects] print(projects) loadM = Menu("Load Project", projects) device.dispMenu(loadM)
def settings(device: Device, val): menu = Menu("Settings", [("Wi-Fi", wifiSettings), ("Bluetooth", nothing)]) device.dispMenu(menu)
def wifiConnect(device: Device, val): networks = scanNetworks() networkList = [(c.ssid, connectToNetwork, [c]) for c in networks] menu = Menu("Connect to Network", networkList, True) device.dispMenu(menu)
def opc(device, val): main = Menu("OP-1 Companion", [("save project", saveCaller), ("load project", loadCaller)]) device.dispMenu(main)