コード例 #1
0
ファイル: MainFrame.py プロジェクト: austinirvine/soundgrain
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())
コード例 #2
0
ファイル: MainFrame.py プロジェクト: austinirvine/soundgrain
    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)
コード例 #3
0
    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))