class EnvelopeFrame(wx.Frame): def __init__(self, parent, size=(600, 300)): wx.Frame.__init__(self, parent, -1, "Envelope Shape", size=size) self.parent = parent self.env = None menuBar = wx.MenuBar() self.menu = wx.Menu() self.menu.Append(200, 'Close\tCtrl+W', "") menuBar.Append(self.menu, "&File") self.SetMenuBar(menuBar) self.Bind(wx.EVT_CLOSE, self.handleClose) self.Bind(wx.EVT_MENU, self.handleClose, id=200) self.graph = Grapher(self, init=[(0.0,0),(0.3,1),(0.7,1),(1.0,0)], mode=1) self.Show(False) def setEnv(self, env): self.env = env self.env.replace(self.graph.getValues()) self.graph.outFunction = self.env.replace def handleClose(self, event): self.Hide() def save(self): return {'envelope': self.graph.getPoints()} def load(self, dict): self.graph.setInitPoints(dict.get('envelope', [(0.0,0),(0.3,1),(0.7,1),(1.0,0)])) if self.env != None: self.env.replace(self.graph.getValues())
def __init__(self, parent, size=(600, 300)): wx.Frame.__init__(self, parent, -1, "Envelope Shape", size=size) self.parent = parent self.env = None menuBar = wx.MenuBar() self.menu = wx.Menu() self.menu.Append(200, 'Close\tCtrl+W', "") menuBar.Append(self.menu, "&File") self.SetMenuBar(menuBar) self.Bind(wx.EVT_CLOSE, self.handleClose) self.Bind(wx.EVT_MENU, self.handleClose, id=200) self.graph = Grapher(self, init=[(0.0,0),(0.3,1),(0.7,1),(1.0,0)], mode=1) self.Show(False)
def __init__(self, parent, fxbox, parameters): style = wx.DEFAULT_FRAME_STYLE | wx.FRAME_FLOAT_ON_PARENT wx.Frame.__init__(self, parent, style=style) self.parent = parent self.fxbox = fxbox self.parameters = parameters self.last_enable = 1 self.graph_object = None closeId = wx.NewId() tabId = wx.NewId() self.prevId = KEY_EVENT_FIRST_ID self.nextId = KEY_EVENT_FIRST_ID + 1 self.cueZeroId = KEY_EVENT_FIRST_ID + 2 self.cue1Id = KEY_EVENT_FIRST_ID + 3 self.cue2Id = KEY_EVENT_FIRST_ID + 4 self.cue3Id = KEY_EVENT_FIRST_ID + 5 self.cue4Id = KEY_EVENT_FIRST_ID + 6 self.cue5Id = KEY_EVENT_FIRST_ID + 7 self.cue6Id = KEY_EVENT_FIRST_ID + 8 self.cue7Id = KEY_EVENT_FIRST_ID + 9 self.cue8Id = KEY_EVENT_FIRST_ID + 10 self.cue9Id = KEY_EVENT_FIRST_ID + 11 self.cue10Id = KEY_EVENT_FIRST_ID + 12 accel_tbl = wx.AcceleratorTable([ (wx.ACCEL_CTRL, ord('W'), closeId), (wx.ACCEL_NORMAL, wx.WXK_TAB, tabId), (wx.ACCEL_NORMAL, wx.WXK_LEFT, self.prevId), (wx.ACCEL_NORMAL, wx.WXK_RIGHT, self.nextId), (wx.ACCEL_NORMAL, wx.WXK_ESCAPE, self.cueZeroId), (wx.ACCEL_NORMAL, ord("1"), self.cue1Id), (wx.ACCEL_NORMAL, ord("2"), self.cue2Id), (wx.ACCEL_NORMAL, ord("3"), self.cue3Id), (wx.ACCEL_NORMAL, ord("4"), self.cue4Id), (wx.ACCEL_NORMAL, ord("5"), self.cue5Id), (wx.ACCEL_NORMAL, ord("6"), self.cue6Id), (wx.ACCEL_NORMAL, ord("7"), self.cue7Id), (wx.ACCEL_NORMAL, ord("8"), self.cue8Id), (wx.ACCEL_NORMAL, ord("9"), self.cue9Id), (wx.ACCEL_NORMAL, ord("0"), self.cue10Id) ]) self.SetAcceleratorTable(accel_tbl) mainWin = QLiveLib.getVar("MainWindow") self.Bind(wx.EVT_MENU, mainWin.onTabulate, id=tabId) self.Bind(wx.EVT_MENU, mainWin.onMoveCue, id=KEY_EVENT_FIRST_ID, id2=KEY_EVENT_FIRST_ID + 100) self.Bind(wx.EVT_MENU, self.onClose, id=closeId) self.Bind(wx.EVT_CLOSE, self.onClose) self.SetTitle("%s Parameter Controls" % self.fxbox.name) self.panel = wx.Panel(self) self.panel.SetBackgroundColour(BACKGROUND_COLOUR) self.sizer = wx.BoxSizer(wx.VERTICAL) # Head headSizer = wx.BoxSizer(wx.HORIZONTAL) headSizer.AddStretchSpacer(1) self.enable = wx.CheckBox(self.panel, -1, "Enable FX:", style=wx.ALIGN_RIGHT) self.enable.SetValue(1) self.enable.Bind(wx.EVT_CHECKBOX, self.enableFx) headSizer.Add(self.enable, 0, wx.TOP | wx.RIGHT, 5) self.sizer.Add(headSizer, 0, wx.EXPAND) self.sizer.Add(wx.StaticLine(self.panel, -1), 0, wx.ALL | wx.EXPAND, 5) # Selection boxes if self.parameters.has_key("inselect"): self.inChannelChecks = [] statbox = wx.StaticBox(self.panel, -1, "Input Selections") selectorSizer = wx.StaticBoxSizer(statbox, wx.HORIZONTAL) labels = self.parameters["inselect"] for i in range(len(labels)): check = wx.CheckBox(self.panel, -1, labels[i]) check.Bind(wx.EVT_CHECKBOX, self.onCheckInSelect) if i == 0: check.SetValue(1) self.inChannelChecks.append(check) selectorSizer.Add(check, 1, wx.EXPAND | wx.ALL, 5) self.sizer.Add(selectorSizer, 0, wx.EXPAND | wx.LEFT | wx.RIGHT, 5) sampleList = ["Mono Track", "Multi-Channel Track"] self.chnlsButton = wx.RadioBox(self.panel, -1, "", wx.DefaultPosition, wx.DefaultSize, sampleList, 2, wx.RA_SPECIFY_COLS | wx.NO_BORDER) self.chnlsButton.Bind(wx.EVT_RADIOBOX, self.onChnlsRadioBox) self.sizer.Add(self.chnlsButton, 0, wx.LEFT, 5) self.sizer.Add(wx.StaticLine(self.panel), 0, wx.ALL | wx.EXPAND, 5) if self.parameters.has_key("outselect"): self.outChannelChecks = [] statbox = wx.StaticBox(self.panel, -1, "Output Selections") selectorSizer = wx.StaticBoxSizer(statbox, wx.HORIZONTAL) labels = self.parameters["outselect"] for i in range(len(labels)): check = wx.CheckBox(self.panel, -1, labels[i]) check.Bind(wx.EVT_CHECKBOX, self.onCheckOutSelect) if i == 0: check.SetValue(1) self.outChannelChecks.append(check) selectorSizer.Add(check, 1, wx.EXPAND | wx.ALL, 5) self.sizer.Add(selectorSizer, 0, wx.EXPAND | wx.LEFT | wx.RIGHT, 5) if self.parameters.has_key("select"): self.selectedSoundfile = "None" soundfiles = QLiveLib.getVar("Soundfiles").getSoundFileObjects() choices = ["None"] + [str(snd.getId() + 1) for snd in soundfiles] popupSizer = wx.BoxSizer(wx.HORIZONTAL) popupTitle = wx.StaticText(self.panel, -1, "Choose a Soundfile:") popupSizer.Add(popupTitle, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5) self.soundfilesPopup = wx.Choice(self.panel, -1, choices=choices) self.soundfilesPopup.SetSelection(0) self.soundfilesPopup.Bind(wx.EVT_CHOICE, self.chooseSoundfile) popupSizer.Add(self.soundfilesPopup, 0, wx.ALL, 5) self.sizer.Add(popupSizer, 0, wx.EXPAND | wx.LEFT | wx.RIGHT, 5) # Controller box if self.parameters.has_key("ctrls"): knobSizer = wx.BoxSizer(wx.HORIZONTAL) sampleList = ["Slider Values", "Interpolation Times"] self.interpButton = wx.RadioBox(self.panel, -1, "", wx.DefaultPosition, wx.DefaultSize, sampleList, 2, wx.RA_SPECIFY_COLS | wx.NO_BORDER) self.interpButton.Bind(wx.EVT_RADIOBOX, self.showMorphEvent) self.sizer.Add(self.interpButton, 0, wx.LEFT, 5) self.widgets = [] for param in self.parameters["ctrls"]: slider = SliderWidget(self.panel, param, fxbox) self.widgets.append(slider) knobSizer.Add(slider, 0, wx.EXPAND | wx.LEFT | wx.RIGHT | wx.BOTTOM, 5) self.sizer.Add(knobSizer, 0, wx.EXPAND) self.graph = Grapher(self.panel, xlen=256, yrange=(0, 1), init=[(0, 0), (0.5, 0.5), (1, 0)], mode=0, outFunction=None) self.graph.SetSize((500, 200)) self.graph.Hide() self.sizer.Add(self.graph, 1, wx.EXPAND | wx.ALL, 5) self.panel.SetSizer(self.sizer) self.frameSizer = wx.BoxSizer(wx.HORIZONTAL) self.frameSizer.Add(self.panel, 1, wx.EXPAND) self.SetSizerAndFit(self.frameSizer) self.Bind(wx.EVT_ENTER_WINDOW, self.getFocus) self.SetMinSize((500, -1)) self.SetSize((500, -1))