16b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi""" 26b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi File: 36b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi JetDialogs.py 46b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 56b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi Contents and purpose: 66b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi Dialog boxes used in JetCreator 76b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 86b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi Copyright (c) 2008 Android Open Source Project 96b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 106b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi Licensed under the Apache License, Version 2.0 (the "License"); 116b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi you may not use this file except in compliance with the License. 126b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi You may obtain a copy of the License at 136b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 146b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi http://www.apache.org/licenses/LICENSE-2.0 156b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 166b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi Unless required by applicable law or agreed to in writing, software 176b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi distributed under the License is distributed on an "AS IS" BASIS, 186b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 196b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi See the License for the specific language governing permissions and 206b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi limitations under the License. 216b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi""" 226b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 236b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Triviimport wx 246b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Triviimport thread 256b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Triviimport wx.lib.newevent 266b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 276b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivifrom JetDefs import * 286b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivifrom JetCtrls import * 296b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivifrom JetFile import * 306b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivifrom JetUtils import * 316b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivifrom JetPreview import * 326b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivifrom JetSegGraph import * 336b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivifrom eas import * 346b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivifrom JetStatusEvent import * 356b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 366b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel TriviPLAY_SEGMENT = 1 376b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel TriviPLAY_MIDI = 2 386b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 396b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Triviclass JetEdit(): 406b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Class used to build dialog box controls from the definitions in JetDefs """ 416b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def __init__(self, panel, ctrlList, callbackClass): 426b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi LBL_OFFSET = 15 436b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 446b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi ctrls = getattr(JetDefs, ctrlList) 456b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.ctrls = {} 466b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi for Lbl, Text, Row, Col, Len, Min, Max, Id, Lst, Fct, Enabled, HelpText in ctrls: 476b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi try: 486b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi iDisplayLbl = True 496b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if Text[0:3] == "btn": 506b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.ctrls[Text] = wx.Button(panel, Id, Lbl, wx.Point(Col, Row), size=Len) 516b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if Fct > "": 526b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.ctrls[Text].Bind(wx.EVT_BUTTON, getattr(callbackClass, Fct), self.ctrls[Text], id=Id) 536b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if Id == wx.ID_OK: 546b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.ctrls[Text].SetDefault() 556b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi iDisplayLbl = False 566b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi else: 576b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if Text[0:3] == "txt": 586b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.ctrls[Text] = wx.TextCtrl(panel, Id, "", wx.Point(Col, Row + LBL_OFFSET +3), wx.Size(Len,-1)) 596b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi elif Text[0:4] == "spn1": 606b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.ctrls[Text] = JetSpinOneBased(panel, Id, "", wx.Point(Col, Row + LBL_OFFSET), wx.Size(Len,-1), min=Min, max=Max) 616b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi elif Text[0:3] == "spn": 626b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.ctrls[Text] = JetSpin(panel, Id, "", wx.Point(Col, Row + LBL_OFFSET), wx.Size(Len,-1), min=Min, max=Max) 636b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi elif Text[0:3] == "cmb": 646b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.ctrls[Text] = wx.ComboBox(panel, Id, "", wx.Point(Col, Row + LBL_OFFSET), wx.Size(Len,-1), Lst, wx.CB_DROPDOWN | wx.CB_READONLY ) 656b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.ctrls[Text].SetValue(Lst[0]) 666b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if Fct > "": 676b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.ctrls[Text].Bind(wx.EVT_COMBOBOX, getattr(callbackClass, Fct), self.ctrls[Text]) 686b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi elif Text[0:2] == "tm": 696b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.ctrls[Text] = TimeCtrl(panel, pos=(Col, Row + LBL_OFFSET), ctlName=Text) 706b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi elif Text[0:7] == "filecmb": 716b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.ctrls[Text] = JetFileCombo(panel, pos=(Col, Row + LBL_OFFSET), size=wx.Size(Len,-1), title=Lbl, spec=Lst, id=Id) 726b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi elif Text[0:7] == "filetxt": 736b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.ctrls[Text] = JetFileText(panel, pos=(Col, Row + LBL_OFFSET), size=wx.Size(Len,-1), title=Lbl, spec=Lst, id=Id) 746b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi elif Text[0:2] == "fr": 756b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.ctrls[Text] = wx.StaticBox(parent=panel, id=wx.ID_ANY, label=Lbl, pos=(Row, Col), size=Len) 766b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi iDisplayLbl = False 776b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi elif Text[0:3] == "chk": 786b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.ctrls[Text] = JetCheckBox(panel, Id, label=Lbl, pos=(Col, Row), size=wx.Size(Len,-1)) 796b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi iDisplayLbl = False 806b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if Fct > "": 816b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.ctrls[Text].Bind(wx.EVT_CHECKBOX , getattr(callbackClass, Fct), self.ctrls[Text]) 826b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi elif Text[0:6] == "rdobox": 836b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.ctrls[Text] = wx.RadioBox(panel, Id, label=Lbl, pos=(Col, Row), size=Len, choices=Lst, majorDimension=1, style=wx.RA_SPECIFY_COLS) 846b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi iDisplayLbl = False 856b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if Fct > "": 866b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.ctrls[Text].Bind(wx.EVT_RADIOBOX , getattr(callbackClass, Fct), self.ctrls[Text]) 876b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi elif Text[0:3] == "opt": 886b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.ctrls[Text] = JetRadioButton(panel, Id, label=Lbl, pos=(Col, Row), size=wx.Size(Len,-1)) 896b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi iDisplayLbl = False 906b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.ctrls[Text].SetValue(Lst) 916b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if Fct > "": 926b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.ctrls[Text].Bind(wx.EVT_RADIOBUTTON , getattr(callbackClass, Fct), self.ctrls[Text]) 936b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi elif Text[0:3] == "lst": 946b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.ctrls[Text] = wx.ListBox(panel, Id, pos=(Col, Row), size=Len) 956b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi iDisplayLbl = False 966b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi elif Text[0:4] == "grd2": 976b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.ctrls[Text] = JetTrackCtrl(panel, Id, pos=(Col, Row + LBL_OFFSET), size=Len, style=wx.LC_REPORT | wx.SUNKEN_BORDER) 986b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi iDisplayLbl = True 996b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi elif Text[0:3] == "grd": 1006b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.ctrls[Text] = JetListCtrl(panel, Id, pos=(Col, Row), size=Len) 1016b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi iDisplayLbl = False 1026b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi elif Text[0:5] == "graph": 1036b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.ctrls[Text] = SegmentGraph(panel, pos=(Col, Row), size=Len) 1046b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi iDisplayLbl = False 1056b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi elif Text[0:3] == "hlp": 1066b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.ctrls[Text] = wx.ContextHelpButton(panel, Id, pos=(Col, Row)) 1076b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi iDisplayLbl = False 1086b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi elif Text[0:3] == "lbl": 1096b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.ctrls[Text] = wx.StaticText(panel, Id, Lbl, wx.Point(Col, Row), size=wx.Size(Len[0],Len[1])) 1106b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi iDisplayLbl = False 1116b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi elif Text[0:3] == "box": 1126b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.ctrls[Text] = wx.StaticBox(panel, wx.ID_ANY, Lbl, pos=(Col, Row), size=Len) 1136b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi iDisplayLbl = False 1146b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 1156b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if iDisplayLbl: 1166b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.ctrls[Lbl] = wx.StaticText(panel, Id, Lbl, wx.Point(Col, Row)) 1176b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if not Enabled: 1186b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.ctrls[Text].Enable(False) 1196b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 1206b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi helpText = IniGetValue(JetDefs.JETCREATOR_HLP, ctrlList, Lbl) 1216b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if helpText > "": 1226b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.ctrls[Text].SetHelpText(helpText) 1236b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 1246b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi #except AttributeError: 1256b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi #No stub function for testing 1266b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi #print("def " + Fct + "(self, event): pass") 1276b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi except: 1286b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi raise 1296b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 1306b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def GetValue(self, fld): 1316b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Gets the value of a control """ 1326b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi return self.ctrls[fld].GetValue() 1336b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 1346b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def SetValue(self, fld, val): 1356b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Sets the value of a control """ 1366b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.ctrls[fld].SetValue(val) 1376b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 1386b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Triviclass JetOpen(wx.Dialog): 1396b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Opens a jet definition file """ 1406b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def __init__(self): 1416b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi wx.Dialog.__init__(self, None, -1, JetDefs.DLG_JETOPEN) 1426b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.fileName = "" 1436b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je = JetEdit(self, "JETOPEN_CTRLS", self) 1446b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi fileList = GetRecentJetFiles() 1456b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_JLIST].AppendItems(fileList) 1466b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if len(fileList) > 0: 1476b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_JFILE].SetValue(fileList[0]) 1486b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.Bind(wx.EVT_LISTBOX_DCLICK, self.OnOpen) 1496b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.Bind(wx.EVT_LISTBOX, self.OnClick) 1506b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.SetSize(JetDefs.JETOPEN_SIZE) 1516b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.CenterOnParent() 1526b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 1536b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def OnJetImport(self, event): 1546b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Exit the dialog with flag to import """ 1556b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.EndModal(JetDefs.ID_JET_IMPORT) 1566b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 1576b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def OnClick(self, event): 1586b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Clicking on item in listbox """ 1596b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi sValue = self.je.ctrls[JetDefs.F_JLIST].GetString(self.je.ctrls[JetDefs.F_JLIST].GetSelection()) 1606b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_JFILE].SetValue(sValue) 1616b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 1626b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def OnOpen(self, event): 1636b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Double clicking on item in listbox """ 1646b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi sValue = self.je.ctrls[JetDefs.F_JLIST].GetString(self.je.ctrls[JetDefs.F_JLIST].GetSelection()) 1656b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_JFILE].SetValue(sValue) 1666b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if self.Validate(): 1676b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.fileName = self.je.ctrls[JetDefs.F_JFILE].GetValue() 1686b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi AppendRecentJetFile(self.fileName) 1696b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.EndModal(JetDefs.ID_JET_OPEN) 1706b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 1716b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def OnOk(self, event): 1726b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Clicking the ok button """ 1736b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if self.Validate(): 1746b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.fileName = self.je.ctrls[JetDefs.F_JFILE].GetValue() 1756b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi AppendRecentJetFile(self.fileName) 1766b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.EndModal(JetDefs.ID_JET_OPEN) 1776b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 1786b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def OnNew(self, event): 1796b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Exit the dialog with flag to create new blank jet file """ 1806b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.EndModal(JetDefs.ID_JET_NEW) 1816b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 1826b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def Validate(self): 1836b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Validates the filename """ 1846b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if len(self.je.ctrls[JetDefs.F_JFILE].GetValue()) == 0: 1856b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi InfoMsg("Jet Filename", "The Jet filename is blank.") 1866b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_JFILE].SetFocus() 1876b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi return False 1886b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if not FileExists(self.je.ctrls[JetDefs.F_JFILE].GetValue()): 1896b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi InfoMsg("MIDI File", "The file does not exist.") 1906b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_JFILE].SetFocus() 1916b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi return False 1926b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi return True 1936b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 1946b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Triviclass JetPreferences(wx.Dialog): 1956b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Preferences dialog box """ 1966b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def __init__(self): 1976b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi wx.Dialog.__init__(self, None, -1, JetDefs.DLG_PREFERENCES) 1986b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.SetExtraStyle(wx.DIALOG_EX_CONTEXTHELP) 1996b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je = JetEdit(self, "PREFERENCES_CTRLS", self) 2006b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.SetSize(JetDefs.PREFERENCES_SIZE) 2016b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.CenterOnParent() 2026b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 2036b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def OnOk(self, event): 2046b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.EndModal(wx.ID_OK) 2056b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 2066b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def GetValue(self, fld): 2076b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi return self.je.ctrls[fld].GetValue() 2086b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 2096b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def SetValue(self, fld, val): 2106b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[fld].SetValue(val) 2116b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 2126b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 2136b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Triviclass JetAbout(wx.Dialog): 2146b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ About dialog box """ 2156b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def __init__(self): 2166b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi wx.Dialog.__init__(self, None, -1, JetDefs.DLG_ABOUT) 2176b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi img = __import__('img_splash') 2186b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi bmp = img.getBitmap() 2196b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi b = wx.StaticBitmap(self, -1, bmp) 2206b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.SetSize((bmp.GetWidth(), bmp.GetHeight())) 2216b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.CenterOnParent() 2226b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi s = __import__('sys') 2236b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi print(s.platform) 2246b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 2256b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def OnOk(self, event): 2266b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.EndModal(wx.ID_OK) 2276b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 2286b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def GetValue(self, fld): 2296b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi return self.je.ctrls[fld].GetValue() 2306b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 2316b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def SetValue(self, fld, val): 2326b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[fld].SetValue(val) 2336b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 2346b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 2356b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Triviclass JetPropertiesDialog(wx.Dialog): 2366b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Properties dialog box """ 2376b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def __init__(self): 2386b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi wx.Dialog.__init__(self, None, -1, JetDefs.DLG_PROPERTIES) 2396b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.SetExtraStyle(wx.DIALOG_EX_CONTEXTHELP) 2406b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je = JetEdit(self, "JET_PROPERTIES_CTRLS", self) 2416b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.SetSize(JetDefs.JET_PROPERTIES_SIZE) 2426b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.CenterOnParent() 2436b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 2446b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def OnOk(self, event): 2456b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.EndModal(wx.ID_OK) 2466b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 2476b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def GetValue(self, fld): 2486b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi return self.je.ctrls[fld].GetValue() 2496b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 2506b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def SetValue(self, fld, val): 2516b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[fld].SetValue(val) 2526b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 2536b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 2546b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Triviclass JetErrors(wx.Dialog): 2556b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Errors dialog box """ 2566b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def __init__(self, title): 2576b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi wx.Dialog.__init__(self, None, -1, title) 2586b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je = JetEdit(self, "ERRORDLG", self) 2596b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.SetSize(JetDefs.ERRORDLG_SIZE) 2606b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.CenterOnParent() 2616b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 2626b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def OnOk(self, event): 2636b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.EndModal(wx.ID_OK) 2646b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 2656b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def SetErrors(self, errors): 2666b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_ERRGRID].AddCol("Error", JetDefs.ERRORCOLW) 2676b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_ERRGRID].AddCol("Description", JetDefs.ERRORCOLW) 2686b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_ERRGRID].AddRows(errors) 2696b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 2706b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 2716b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Triviclass SegEdit(wx.Dialog): 2726b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Dialog box to edit segments """ 2736b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def __init__(self, title, currentJetConfigFile): 2746b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi wx.Dialog.__init__(self, None, -1, title) 2756b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.SetExtraStyle(wx.DIALOG_EX_CONTEXTHELP) 2766b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.currentJetConfigFile = currentJetConfigFile 2776b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je = JetEdit(self, "SEGDLG_CTRLS", self) 2786b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_MIDIFILE].cmb.Bind(wx.EVT_KILL_FOCUS, self.OnMidiChanged) 2796b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_MIDIFILE].cmb.Bind(wx.EVT_COMBOBOX, self.OnMidiChanged) 2806b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_MIDIFILE].SetEventFire(True) 2816b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_MUTEFLAGS].AddCol(JetDefs.GRD_TRACK, JetDefs.MUTEGRD_TRACK) 2826b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_MUTEFLAGS].AddCol(JetDefs.GRD_CHANNEL, JetDefs.MUTEGRD_CHANNEL) 2836b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_MUTEFLAGS].AddCol(JetDefs.GRD_NAME, JetDefs.MUTEGRD_NAME) 2846b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_MUTEFLAGS].BindCheckBox(self.OnEventChecked) 2856b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_START].SetChangeCallbackFct(self.UpdateGraph) 2866b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_END].SetChangeCallbackFct(self.UpdateGraph) 2876b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_DISPEMPTYTRACKS].SetValue(IniGetValue(self.currentJetConfigFile, JetDefs.F_DISPEMPTYTRACKS, JetDefs.F_DISPEMPTYTRACKS, 'bool', 'False')) 2886b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_GRAPHLABELS].SetValue(IniGetValue(self.currentJetConfigFile, JetDefs.F_GRAPHLABELS, JetDefs.F_GRAPHLABELS, 'bool', 'True')) 2896b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_GRAPHCLIPS].SetValue(IniGetValue(self.currentJetConfigFile, JetDefs.F_GRAPHCLIPS, JetDefs.F_GRAPHCLIPS, 'bool', 'True')) 2906b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_GRAPHAPPEVTS].SetValue(IniGetValue(self.currentJetConfigFile, JetDefs.F_GRAPHAPPEVTS, JetDefs.F_GRAPHAPPEVTS, 'bool', 'True')) 2916b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.replicatePrefix = "" 2926b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.lstReplicate = [] 2936b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.chkReplaceMatching = False 2946b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 2956b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi EVT_JET_STATUS(self, self.OnJetStatusUpdate) 2966b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi wx.EVT_CLOSE(self, self.OnClose) 2976b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 2986b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.Player = None 2996b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.segment = None 3006b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.graphSegment = None 3016b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.jetevents = [] 3026b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.lastMidiFile = "" 3036b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.lastMidiInfo = None 3046b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.playMode = PLAY_SEGMENT 3056b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.graphMode = PLAY_MIDI 3066b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.SetSize(JetDefs.SEGDLG_SIZE) 3076b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.CenterOnParent() 3086b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 3096b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def OnClose(self, event): 3106b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Closing the dialog box """ 3116b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.ShutdownPlayer() 3126b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_START].UnBindKillFocus() 3136b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_END].UnBindKillFocus() 3146b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.EndModal(wx.ID_CANCEL) 3156b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 3166b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def ShutdownPlayer(self): 3176b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Shutdown player flag """ 3186b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if self.Player is not None: 3196b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.Player.SetKeepPlayingFlag(False) 3206b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 3216b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def OnMidiChanged(self, event): 3226b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ When new midi file selected, get its info """ 3236b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.UpdateMaxMbt() 3246b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi event.Skip() 3256b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 3266b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def UpdateMaxMbt(self): 3276b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Get midi info in thread so UI smoother """ 3286b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi thread.start_new_thread(self.UpdateMaxMbtThread, ()) 3296b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 3306b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def UpdateMaxMbtThread(self): 3316b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Thread to get midi file info """ 3326b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if self.je.ctrls[JetDefs.F_MIDIFILE].GetValue() == self.lastMidiFile: 3336b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi return 3346b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.lastMidiFile = self.je.ctrls[JetDefs.F_MIDIFILE].GetValue() 3356b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.lastMidiInfo = GetMidiInfo(self.je.ctrls[JetDefs.F_MIDIFILE].GetValue()) 3366b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi wx.PostEvent(self, JetStatusEvent(JetDefs.PST_MIDI_INFO, self.lastMidiInfo)) 3376b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 3386b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def GetValue(self, fld): 3396b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Gets a control value """ 3406b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi return self.je.ctrls[fld].GetValue() 3416b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 3426b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def SetValue(self, fld, val): 3436b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Sets a control value """ 3446b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[fld].SetValue(val) 3456b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if self.je.ctrls[fld] == self.je.ctrls[JetDefs.F_MIDIFILE]: 3466b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.UpdateMaxMbt() 3476b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 3486b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def OnOk(self, event): 3496b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Exits dialog box """ 3506b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.ShutdownPlayer() 3516b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if self.Validate(): 3526b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_START].UnBindKillFocus() 3536b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_END].UnBindKillFocus() 3546b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.EndModal(wx.ID_OK) 3556b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 3566b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def Validate(self): 3576b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Validates the control values before exiting """ 3586b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if not CompareMbt(self.je.ctrls[JetDefs.F_START].GetValue(), self.je.ctrls[JetDefs.F_END].GetValue()): 3596b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi InfoMsg("Start/End", "The segment starting and ending times are illogical.") 3606b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_START].SetFocus() 3616b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi return False 3626b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if len(self.je.ctrls[JetDefs.F_SEGNAME].GetValue()) == 0: 3636b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi InfoMsg("Segment Name", "The segment must have a name.") 3646b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_SEGNAME].SetFocus() 3656b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi return False 3666b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if len(self.je.ctrls[JetDefs.F_MIDIFILE].GetValue()) == 0: 3676b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi InfoMsg("MIDI File", "The segment must have a midi file selected.") 3686b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_MIDIFILE].SetFocus() 3696b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi return False 3706b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if not FileExists(self.je.ctrls[JetDefs.F_MIDIFILE].GetValue()): 3716b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi InfoMsg("MIDI File", "The MIDI file does not exist.") 3726b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_MIDIFILE].SetFocus() 3736b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi return False 3746b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if len(self.je.ctrls[JetDefs.F_DLSFILE].GetValue()) > 0: 3756b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if not FileExists(self.je.ctrls[JetDefs.F_DLSFILE].GetValue()): 3766b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi InfoMsg("DLS File", "The DLS file does not exist.") 3776b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_DLSFILE].SetFocus() 3786b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi return False 3796b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_MUTEFLAGS].SetValue(ComputeMuteFlagsFromList(self.je.ctrls[JetDefs.F_MUTEFLAGS])) 3806b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi return True 3816b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 3826b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def SetSegment(self, mode): 3836b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Builds the segment info for graphing """ 3846b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if mode == PLAY_SEGMENT: 3856b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi jetevents = self.jetevents 3866b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi segment = JetSegment(self.GetValue(JetDefs.F_SEGNAME), 3876b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.GetValue(JetDefs.F_MIDIFILE), 3886b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.GetValue(JetDefs.F_START), 3896b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.GetValue(JetDefs.F_END), 3906b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi JetDefs.MBT_ZEROSTR, 3916b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.GetValue(JetDefs.F_SEGNAME), 3926b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.GetValue(JetDefs.F_QUANTIZE), 3936b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi jetevents, 3946b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.GetValue(JetDefs.F_DLSFILE), 3956b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi None, 3966b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.GetValue(JetDefs.F_TRANSPOSE), 3976b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.GetValue(JetDefs.F_REPEAT), 3986b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.GetValue(JetDefs.F_MUTEFLAGS)) 3996b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi else: 4006b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi jetevents = [] 4016b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi segment = JetSegment(self.GetValue(JetDefs.F_SEGNAME), 4026b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.GetValue(JetDefs.F_MIDIFILE), 4036b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi JetDefs.MBT_ZEROSTR, 4046b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.lastMidiInfo.endMbtStr, 4056b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi JetDefs.MBT_ZEROSTR, 4066b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.GetValue(JetDefs.F_SEGNAME), 4076b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.GetValue(JetDefs.F_QUANTIZE), 4086b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi jetevents, 4096b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.GetValue(JetDefs.F_DLSFILE), 4106b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi None, 4116b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 0, 4126b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 0, 4136b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 0) 4146b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi return segment 4156b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 4166b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def OnEventChecked(self, index, checked): 4176b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Track is checked so mute or unmute it """ 4186b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if self.Player is not None: 4196b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi trackNum = self.je.ctrls[JetDefs.F_MUTEFLAGS].GetTrackNumber(index) 4206b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.Player.SetMuteFlag(trackNum, checked) 4216b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 4226b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def OnPlay(self, event): 4236b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Play the segment button pressed """ 4246b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if self.je.ctrls[JetDefs.F_PLAY].GetLabel() == JetDefs.BUT_STOP: 4256b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.Player.SetKeepPlayingFlag(False) 4266b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi return 4276b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 4286b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if not self.Validate(): 4296b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi return 4306b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 4316b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.playMode = PLAY_SEGMENT 4326b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.graphSegment = self.SetSegment(self.graphMode) 4336b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.UpdateGraph() 4346b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.Player = PreviewPlayer(self.je.ctrls[JetDefs.F_PLAY], self.SetSegment(self.playMode)) 4356b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.Player.SetGraphCtrl(self.je.ctrls[JetDefs.F_GRAPH], self) 4366b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.PlayerThread = thread.start_new_thread(self.Player .Start, ()) 4376b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 4386b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def OnPlayMidi(self, event): 4396b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Play the whole midi file pressed """ 4406b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if self.je.ctrls[JetDefs.F_PLAYMIDI].GetLabel() == JetDefs.BUT_STOP: 4416b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.Player.SetKeepPlayingFlag(False) 4426b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi return 4436b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 4446b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if not self.Validate(): 4456b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi return 4466b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 4476b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.playMode = PLAY_MIDI 4486b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.graphSegment = self.SetSegment(self.graphMode) 4496b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.UpdateGraph() 4506b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.Player = PreviewPlayer(self.je.ctrls[JetDefs.F_PLAYMIDI], self.SetSegment(self.playMode)) 4516b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.Player.SetGraphCtrl(self.je.ctrls[JetDefs.F_GRAPH], self) 4526b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.PlayerThread = thread.start_new_thread(self.Player .Start, ()) 4536b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 4546b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def OnSetGraphType(self, event): 4556b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Sets the type of graph """ 4566b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.SetGraphType(event.GetInt()) 4576b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 4586b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def SetGraphType(self, iMode): 4596b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Sets the type of graph """ 4606b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if iMode == 1: 4616b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.graphMode = PLAY_SEGMENT 4626b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi else: 4636b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.graphMode = PLAY_MIDI 4646b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.graphSegment = self.SetSegment(self.graphMode) 4656b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.UpdateGraph() 4666b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 4676b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def OnGraphUpdate(self, evt): 4686b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Calls graph control to draw """ 4696b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_GRAPH].DoDrawing() 4706b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 4716b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def UpdateGraph(self): 4726b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Updates values for graph control """ 4736b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if self.graphMode == PLAY_SEGMENT: 4746b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_GRAPH].LoadSegment(self.graphSegment, showLabels=IniGetValue(self.currentJetConfigFile, JetDefs.F_GRAPHLABELS, JetDefs.F_GRAPHLABELS, 'bool', 'True'), showClips=IniGetValue(self.currentJetConfigFile, JetDefs.F_GRAPHCLIPS, JetDefs.F_GRAPHCLIPS, 'bool', 'True'), showAppEvts=IniGetValue(self.currentJetConfigFile, JetDefs.F_GRAPHAPPEVTS, JetDefs.F_GRAPHAPPEVTS, 'bool', 'True')) 4756b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi else: 4766b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if self.playMode == PLAY_SEGMENT: 4776b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi iMidiMode = True 4786b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi else: 4796b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi iMidiMode = False 4806b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_GRAPH].LoadSegment(self.graphSegment,(self.GetValue(JetDefs.F_SEGNAME), self.GetValue(JetDefs.F_START), self.GetValue(JetDefs.F_END)), iMidiMode, showLabels=IniGetValue(self.currentJetConfigFile, JetDefs.F_GRAPHLABELS, JetDefs.F_GRAPHLABELS, 'bool', 'True'), showClips=IniGetValue(self.currentJetConfigFile, JetDefs.F_GRAPHCLIPS, JetDefs.F_GRAPHCLIPS, 'bool', 'True'), showAppEvts=IniGetValue(self.currentJetConfigFile, JetDefs.F_GRAPHAPPEVTS, JetDefs.F_GRAPHAPPEVTS, 'bool', 'True')) 4816b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 4826b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def OnJetStatusUpdate(self, evt): 4836b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ All UI needed by thread must be called via Postevent or OS X crashes """ 4846b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if evt.mode == JetDefs.PST_UPD_LOCATION: 4856b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_GRAPH].UpdateLocation(evt.data) 4866b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi elif evt.mode == JetDefs.PST_PLAY: 4876b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if self.playMode == PLAY_SEGMENT: 4886b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_PLAY].SetLabel(JetDefs.BUT_STOP) 4896b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_PLAYMIDI].Enabled = False 4906b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi else: 4916b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_RDOGRAPH].Enabled = False 4926b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_PLAYMIDI].SetLabel(JetDefs.BUT_STOP) 4936b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_PLAY].Enabled = False 4946b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 4956b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_PAUSE].Enabled = True 4966b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_PAUSE].SetLabel(JetDefs.BUT_PAUSE) 4976b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi elif evt.mode == JetDefs.PST_DONE: 4986b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_RDOGRAPH].Enabled = True 4996b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if self.playMode == PLAY_SEGMENT: 5006b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_PLAY].SetLabel(JetDefs.BUT_PLAYSEG) 5016b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_PLAYMIDI].Enabled = True 5026b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi else: 5036b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_PLAYMIDI].SetLabel(JetDefs.BUT_PLAYMIDI) 5046b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_PLAY].Enabled = True 5056b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 5066b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_PAUSE].Enabled = False 5076b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_PAUSE].SetLabel(JetDefs.BUT_PAUSE) 5086b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi elif evt.mode == JetDefs.PST_PAUSE: 5096b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_PAUSE].SetLabel(JetDefs.BUT_RESUME) 5106b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi elif evt.mode == JetDefs.PST_RESUME: 5116b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_PAUSE].SetLabel(JetDefs.BUT_PAUSE) 5126b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi elif evt.mode == JetDefs.PST_MIDI_INFO: 5136b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi ClearRowSelections(self.je.ctrls[JetDefs.F_MUTEFLAGS]) 5146b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.md = evt.data 5156b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if self.md.err == 0: 5166b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_END].SetMaxMbt(self.md.maxMeasures+1,self.md.maxBeats,self.md.maxTicks) 5176b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if self.je.ctrls[JetDefs.F_END].GetValue() == JetDefs.MBT_ZEROSTR: 5186b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_END].SetValue((self.md.maxMeasures,0,0)) 5196b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_START].SetMaxMbt(self.md.maxMeasures+1,self.md.maxBeats,self.md.maxTicks) 5206b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_MUTEFLAGS].DeleteAllItems() 5216b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi loadEmpty = IniGetValue(self.currentJetConfigFile, JetDefs.INI_DISPEMPTYTRACKS, JetDefs.INI_DISPEMPTYTRACKS, 'bool', 'False') 5226b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi for track in self.md.trackList: 5236b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_MUTEFLAGS].AddTrackRow(track, loadEmpty) 5246b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_MUTEFLAGS].CheckTracks(self.je.ctrls[JetDefs.F_MUTEFLAGS].GetValue()) 5256b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.graphSegment = self.SetSegment(self.graphMode) 5266b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.UpdateGraph() 5276b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 5286b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def OnSetTrackDisplayOption(self, evt): 5296b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi IniSetValue(self.currentJetConfigFile, JetDefs.INI_DISPEMPTYTRACKS, JetDefs.INI_DISPEMPTYTRACKS, self.je.ctrls[JetDefs.F_DISPEMPTYTRACKS].GetValue()) 5306b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi loadEmpty = IniGetValue(self.currentJetConfigFile, JetDefs.INI_DISPEMPTYTRACKS, JetDefs.INI_DISPEMPTYTRACKS, 'bool', 'False') 5316b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if self.md is not None: 5326b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_MUTEFLAGS].DeleteAllItems() 5336b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if self.md.err == 0: 5346b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi for track in self.md.trackList: 5356b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_MUTEFLAGS].AddTrackRow(track, loadEmpty) 5366b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 5376b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def OnPause(self, evt): 5386b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Pauses the playback """ 5396b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.Player.Pause() 5406b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 5416b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def OnSetGraphOptions(self, evt): 5426b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Sets graph options """ 5436b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi IniSetValue(self.currentJetConfigFile, JetDefs.F_GRAPHLABELS, JetDefs.F_GRAPHLABELS, self.je.ctrls[JetDefs.F_GRAPHLABELS].GetValue()) 5446b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi IniSetValue(self.currentJetConfigFile, JetDefs.F_GRAPHAPPEVTS, JetDefs.F_GRAPHAPPEVTS, self.je.ctrls[JetDefs.F_GRAPHAPPEVTS].GetValue()) 5456b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi IniSetValue(self.currentJetConfigFile, JetDefs.F_GRAPHCLIPS, JetDefs.F_GRAPHCLIPS, self.je.ctrls[JetDefs.F_GRAPHCLIPS].GetValue()) 5466b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.UpdateGraph() 5476b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 5486b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def OnReplicate(self, evt): 5496b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi dlg = JetReplicate("Replicate Segment") 5506b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi dlg.SetValue(JetDefs.F_RPREPLACE, True) 5516b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi dlg.SetName(self.GetValue(JetDefs.F_SEGNAME)) 5526b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi dlg.event_type = "SEGMENT" 5536b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi dlg.event_max = self.je.ctrls[JetDefs.F_START].GetMaxMbt() 5546b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi dlg.length = MbtDifference(ConvertStrTimeToTuple(self.GetValue(JetDefs.F_START)), ConvertStrTimeToTuple(self.GetValue(JetDefs.F_END))) 5556b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi result = dlg.ShowModal() 5566b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if result == wx.ID_OK: 5576b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.replicatePrefix = dlg.GetValue(JetDefs.F_RPPREFIX) 5586b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.lstReplicate = dlg.lstReplicate 5596b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.chkReplaceMatching = dlg.GetValue(JetDefs.F_RPREPLACE) 5606b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.EndModal(wx.ID_OK) 5616b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi else: 5626b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi dlg.Destroy() 5636b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 5646b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Triviclass EventEdit(wx.Dialog): 5656b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Event edit dialog box """ 5666b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def __init__(self, title, currentJetConfigFile): 5676b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi wx.Dialog.__init__(self, None, -1, title) 5686b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.SetExtraStyle(wx.DIALOG_EX_CONTEXTHELP) 5696b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.title = title 5706b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.currentJetConfigFile = currentJetConfigFile 5716b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je = JetEdit(self, "EVTDLG_CTRLS", self) 5726b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_MUTEFLAGS].AddCol(JetDefs.GRD_TRACK, JetDefs.MUTEGRD_TRACK) 5736b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_MUTEFLAGS].AddCol(JetDefs.GRD_CHANNEL, JetDefs.MUTEGRD_CHANNEL) 5746b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_MUTEFLAGS].AddCol(JetDefs.GRD_NAME, JetDefs.MUTEGRD_NAME) 5756b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_ESTART].SetChangeCallbackFct(self.UpdateGraph) 5766b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_EEND].SetChangeCallbackFct(self.UpdateGraph) 5776b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_GRAPHLABELS].SetValue(IniGetValue(self.currentJetConfigFile, JetDefs.F_GRAPHLABELS, JetDefs.F_GRAPHLABELS, 'bool', 'True')) 5786b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_GRAPHCLIPS].SetValue(IniGetValue(self.currentJetConfigFile, JetDefs.F_GRAPHCLIPS, JetDefs.F_GRAPHCLIPS, 'bool', 'True')) 5796b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_GRAPHAPPEVTS].SetValue(IniGetValue(self.currentJetConfigFile, JetDefs.F_GRAPHAPPEVTS, JetDefs.F_GRAPHAPPEVTS, 'bool', 'True')) 5806b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi EVT_JET_STATUS(self, self.OnJetStatusUpdate) 5816b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.segment = None 5826b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.Player = None 5836b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.event_id = 1 5846b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.replicatePrefix = "" 5856b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.lstReplicate = [] 5866b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.chkReplaceMatching = False 5876b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 5886b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi wx.EVT_CLOSE(self, self.OnClose) 5896b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.SetSize(JetDefs.EVTDLG_SIZE) 5906b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.CenterOnParent() 5916b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 5926b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def OnGraphUpdate(self, evt): 5936b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Calls the graph module to update the graph """ 5946b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_GRAPH].DoDrawing() 5956b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 5966b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def OnJetStatusUpdate(self, evt): 5976b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Updates to UI needed by play thread come through here otherwise OS X crashes """ 5986b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if evt.mode == JetDefs.PST_UPD_LOCATION: 5996b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_GRAPH].UpdateLocation(evt.data) 6006b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi elif evt.mode == JetDefs.PST_PLAY: 6016b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_PAUSE].SetLabel(JetDefs.BUT_PAUSE) 6026b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_PLAY].SetLabel(JetDefs.BUT_STOP) 6036b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_PAUSE].Enabled = True 6046b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_ETRIGGERBUT].Enabled = True 6056b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_EMUTEBUT].Enabled = True 6066b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi elif evt.mode == JetDefs.PST_DONE: 6076b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_EMUTEBUT].SetLabel(JetDefs.BUT_UNMUTE) 6086b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_PLAY].SetLabel(JetDefs.BUT_PLAY) 6096b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_PAUSE].Enabled = False 6106b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_PAUSE].SetLabel(JetDefs.BUT_PAUSE) 6116b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_ETRIGGERBUT].Enabled = False 6126b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_EMUTEBUT].Enabled = False 6136b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi elif evt.mode == JetDefs.PST_PAUSE: 6146b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_PAUSE].SetLabel(JetDefs.BUT_RESUME) 6156b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi elif evt.mode == JetDefs.PST_RESUME: 6166b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_PAUSE].SetLabel(JetDefs.BUT_PAUSE) 6176b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 6186b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def OnPause(self, evt): 6196b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Pause the player """ 6206b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.Player.Pause() 6216b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 6226b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def UpdateGraph(self): 6236b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Called back from player thread to update the graph """ 6246b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if len(self.segment.jetevents) == 0: 6256b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.segment.jetevents.append(JetEvent(self.je.ctrls[JetDefs.F_ENAME].GetValue(), 6266b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_ETYPE].GetValue(), 6276b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 1, 6286b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_ETRACK].GetValue(), 6296b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_ECHANNEL].GetValue(), 6306b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_ESTART].GetValue(), 6316b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_EEND].GetValue())) 6326b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 6336b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.segment.jetevents[0].event_name = self.je.ctrls[JetDefs.F_ENAME].GetValue() 6346b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.segment.jetevents[0].event_type = self.je.ctrls[JetDefs.F_ETYPE].GetValue() 6356b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.segment.jetevents[0].event_start = self.je.ctrls[JetDefs.F_ESTART].GetValue() 6366b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.segment.jetevents[0].event_end = self.je.ctrls[JetDefs.F_EEND].GetValue() 6376b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_GRAPH].LoadSegment(self.segment, showLabels=IniGetValue(self.currentJetConfigFile, JetDefs.F_GRAPHLABELS, JetDefs.F_GRAPHLABELS, 'bool', 'True'), showClips=IniGetValue(self.currentJetConfigFile, JetDefs.F_GRAPHCLIPS, JetDefs.F_GRAPHCLIPS, 'bool', 'True'), showAppEvts=IniGetValue(self.currentJetConfigFile, JetDefs.F_GRAPHAPPEVTS, JetDefs.F_GRAPHAPPEVTS, 'bool', 'True')) 6386b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 6396b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def OnClose(self, event): 6406b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Called when dialog is closed """ 6416b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.ShutdownPlayer() 6426b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_ESTART].UnBindKillFocus() 6436b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_EEND].UnBindKillFocus() 6446b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.EndModal(wx.ID_CANCEL) 6456b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 6466b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def ShutdownPlayer(self): 6476b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Sets flag to kill play loop """ 6486b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if self.Player is not None: 6496b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.Player.SetKeepPlayingFlag(False) 6506b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 6516b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def GetValue(self, fld): 6526b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Gets the value of a control """ 6536b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi return self.je.ctrls[fld].GetValue() 6546b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 6556b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def SetValue(self, fld, val): 6566b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Sets the value of a control """ 6576b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[fld].SetValue(val) 6586b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 6596b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def SetEventId(self): 6606b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Sets the eventid value """ 6616b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if self.title == JetDefs.MAIN_ADDEVENTTITLE: 6626b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi iNextEventId = -1 6636b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi for evt in self.segment.jetevents: 6646b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if evt.event_type == JetDefs.E_CLIP: 6656b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if iNextEventId < evt.event_id: 6666b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi iNextEventId = evt.event_id 6676b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_EEVENTID].SetValue(iNextEventId + 1) 6686b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 6696b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def OnEventSelect(self, event=None): 6706b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Adjusts the dialog box controls for various types of events """ 6716b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi eType = self.je.ctrls[JetDefs.F_ETYPE].GetValue() 6726b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if eType == JetDefs.E_EOS: 6736b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_ENAME].SetValue(JetDefs.E_EOS) 6746b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_ENAME].Enable(False) 6756b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_ESTART].Enable(False) 6766b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_EEND].Enable(True) 6776b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_ETRIGGERBUT].Enable(False) 6786b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_EEVENTID].Enable(False) 6796b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi elif eType == JetDefs.E_CLIP: 6806b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if len(self.je.ctrls[JetDefs.F_ENAME].GetValue()) == 0 or self.je.ctrls[JetDefs.F_ENAME].GetValue() == JetDefs.E_EOS or self.je.ctrls[JetDefs.F_ENAME].GetValue() == JetDefs.E_APP: 6816b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_ENAME].SetValue(JetDefs.E_CLIP) 6826b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_ENAME].Enable(True) 6836b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_ESTART].Enable(True) 6846b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_EEND].Enable(True) 6856b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_ETRIGGERBUT].Enable(True) 6866b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_EEVENTID].Enable(True) 6876b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_EEVENTID].SetRange(JetDefs.EVENTID_MIN, JetDefs.EVENTID_MAX) 6886b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if self.je.ctrls[JetDefs.F_EEVENTID].GetValue() < JetDefs.EVENTID_MIN: 6896b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_EEVENTID].SetValue(JetDefs.EVENTID_MIN) 6906b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if self.je.ctrls[JetDefs.F_EEVENTID].GetValue() > JetDefs.EVENTID_MAX: 6916b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_EEVENTID].SetValue(JetDefs.EVENTID_MAX) 6926b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.SetEventId() 6936b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi elif eType == JetDefs.E_APP: 6946b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if len(self.je.ctrls[JetDefs.F_ENAME].GetValue()) == 0 or self.je.ctrls[JetDefs.F_ENAME].GetValue() == JetDefs.E_EOS: 6956b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_ENAME].SetValue(JetDefs.E_APP) 6966b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_ENAME].Enable(True) 6976b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_ESTART].Enable(True) 6986b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_EEND].Enable(False) 6996b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_ETRIGGERBUT].Enable(False) 7006b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_EEVENTID].Enable(True) 7016b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_EEVENTID].SetRange(JetDefs.APPCONTROLLERID_MIN, JetDefs.APPCONTROLLERID_MAX) 7026b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if self.je.ctrls[JetDefs.F_EEVENTID].GetValue() < JetDefs.APPCONTROLLERID_MIN: 7036b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_EEVENTID].SetValue(JetDefs.APPCONTROLLERID_MIN) 7046b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if self.je.ctrls[JetDefs.F_EEVENTID].GetValue() > JetDefs.APPCONTROLLERID_MAX: 7056b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_EEVENTID].SetValue(JetDefs.APPCONTROLLERID_MAX) 7066b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 7076b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def OnOk(self, event): 7086b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Exits the dialog box """ 7096b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.ShutdownPlayer() 7106b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if self.Validate(): 7116b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_ESTART].UnBindKillFocus() 7126b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_EEND].UnBindKillFocus() 7136b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.EndModal(wx.ID_OK) 7146b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 7156b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def Validate(self): 7166b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Validates the control values prior to exiting """ 7176b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if len(self.je.ctrls[JetDefs.F_ENAME].GetValue()) == 0: 7186b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi InfoMsg("Event Name", "The event must have a name.") 7196b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_ENAME].SetFocus() 7206b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi return False 7216b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if len(self.je.ctrls[JetDefs.F_ETYPE].GetValue()) == 0: 7226b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi InfoMsg("Event Name", "The event type must be selected.") 7236b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_ETYPE].SetFocus() 7246b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi return False 7256b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if self.je.ctrls[JetDefs.F_ETYPE].GetValue() == JetDefs.E_CLIP: 7266b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if not CompareMbt(self.je.ctrls[JetDefs.F_ESTART].GetValue(), self.je.ctrls[JetDefs.F_EEND].GetValue()): 7276b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi InfoMsg("Start/End", "The event starting and ending times are illogical.") 7286b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_ESTART].SetFocus() 7296b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi return False 7306b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if MbtVal(self.je.ctrls[JetDefs.F_ESTART].GetValue()) < MbtVal(self.je.ctrls[JetDefs.F_START].GetValue()): 7316b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi InfoMsg("Event Starting Time", "The event starting time is illogical.") 7326b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_ESTART].SetFocus() 7336b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi return False 7346b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if MbtVal(self.je.ctrls[JetDefs.F_EEND].GetValue()) > MbtVal(self.je.ctrls[JetDefs.F_END].GetValue()): 7356b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi InfoMsg("Event Ending Time", "The event ending time is illogical.") 7366b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_ESTART].SetFocus() 7376b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi return False 7386b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if self.je.ctrls[JetDefs.F_ETYPE].GetValue() == JetDefs.E_APP: 7396b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_EEND].SetValue(self.je.ctrls[JetDefs.F_ESTART].GetValue()) 7406b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if self.je.ctrls[JetDefs.F_ETYPE].GetValue() == JetDefs.E_EOS: 7416b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_ESTART].SetValue(self.je.ctrls[JetDefs.F_EEND].GetValue()) 7426b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi return True 7436b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 7446b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def SetSegment(self, segment): 7456b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Sets the segment values, then calls the graph update """ 7466b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.segment = segment 7476b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi md = GetMidiInfo(segment.filename) 7486b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if md.err == 0: 7496b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.SetValue(JetDefs.F_SEGNAME, segment.segname) 7506b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.SetValue(JetDefs.F_MUTEFLAGS, segment.mute_flags) 7516b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.SetValue(JetDefs.F_MIDIFILE, segment.filename) 7526b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.SetValue(JetDefs.F_DLSFILE, segment.dlsfile) 7536b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.SetValue(JetDefs.F_START, segment.start) 7546b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.SetValue(JetDefs.F_END, segment.end) 7556b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.SetValue(JetDefs.F_QUANTIZE, segment.quantize) 7566b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.SetValue(JetDefs.F_TRANSPOSE, segment.transpose) 7576b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.SetValue(JetDefs.F_REPEAT, segment.repeat) 7586b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi maxMeasures = abs(int(self.je.ctrls[JetDefs.F_END].GetValue('int')[0])) 7596b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_EEND].SetMaxMbt(maxMeasures+1,md.maxBeats,md.maxTicks) 7606b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_ESTART].SetMaxMbt(maxMeasures+1,md.maxBeats,md.maxTicks) 7616b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi minMeasures = abs(int(self.je.ctrls[JetDefs.F_START].GetValue('int')[0])) 7626b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_EEND].SetMinMbt(minMeasures+1,0,0) 7636b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_ESTART].SetMinMbt(minMeasures+1,0,0) 7646b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_END].GetValue('int') 7656b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_ETRACK].SetRange(1, md.maxTracks) 7666b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_MUTEFLAGS].DeleteAllItems() 7676b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi for track in md.trackList: 7686b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_MUTEFLAGS].AddTrackRow(track) 7696b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_MUTEFLAGS].CheckTracks(self.je.ctrls[JetDefs.F_MUTEFLAGS].GetValue()) 7706b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_MUTEFLAGS].SetTextColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_GRAYTEXT)) 7716b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_GRAPH].LoadSegment(segment, showLabels=IniGetValue(self.currentJetConfigFile, JetDefs.F_GRAPHLABELS, JetDefs.F_GRAPHLABELS, 'bool', 'True'), showClips=IniGetValue(self.currentJetConfigFile, JetDefs.F_GRAPHCLIPS, JetDefs.F_GRAPHCLIPS, 'bool', 'True'), showAppEvts=IniGetValue(self.currentJetConfigFile, JetDefs.F_GRAPHAPPEVTS, JetDefs.F_GRAPHAPPEVTS, 'bool', 'True')) 7726b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 7736b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def OnPlay(self, event): 7746b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Plays the segment allowing interaction with events """ 7756b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if self.je.ctrls[JetDefs.F_PLAY].GetLabel() == JetDefs.BUT_STOP: 7766b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.Player.SetKeepPlayingFlag(False) 7776b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi return 7786b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 7796b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if not self.Validate(): 7806b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi return 7816b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 7826b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi jetevents = [] 7836b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi jetevents.append(JetEvent(self.GetValue(JetDefs.F_ENAME), self.GetValue(JetDefs.F_ETYPE), 7846b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.event_id, int(self.GetValue(JetDefs.F_ETRACK)), 7856b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi int(self.GetValue(JetDefs.F_ECHANNEL)), 7866b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.GetValue(JetDefs.F_ESTART), self.GetValue(JetDefs.F_EEND))) 7876b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 7886b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi segment = JetSegment(self.GetValue(JetDefs.F_SEGNAME), 7896b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.GetValue(JetDefs.F_MIDIFILE), 7906b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.GetValue(JetDefs.F_START), 7916b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.GetValue(JetDefs.F_END), 7926b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi JetDefs.MBT_ZEROSTR, 7936b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.GetValue(JetDefs.F_SEGNAME), 7946b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.GetValue(JetDefs.F_QUANTIZE), 7956b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi jetevents, 7966b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.GetValue(JetDefs.F_DLSFILE), 7976b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi None, 7986b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.GetValue(JetDefs.F_TRANSPOSE), 7996b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.GetValue(JetDefs.F_REPEAT), 8006b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.GetValue(JetDefs.F_MUTEFLAGS)) 8016b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 8026b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.Player = PreviewPlayer(self.je.ctrls[JetDefs.F_PLAY], segment) 8036b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.Player.SetGraphCtrl(self.je.ctrls[JetDefs.F_GRAPH], self) 8046b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_GRAPH].ClickCallbackFct = self.GraphTriggerClip 8056b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.Player.trigger_button = self.je.ctrls[JetDefs.F_ETRIGGERBUT] 8066b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.Player.mute_button = self.je.ctrls[JetDefs.F_EMUTEBUT] 8076b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi thread.start_new_thread(self.Player .Start, ()) 8086b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 8096b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def GraphTriggerClip(self, sClipName, iEventId): 8106b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Triggers a clip via graph """ 8116b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if self.Player is not None: 8126b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.Player.GraphTriggerClip(sClipName, iEventId) 8136b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 8146b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def OnMute(self, event): 8156b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Mutes a track """ 8166b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if self.Player is not None: 8176b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.Player.MuteTrackViaButton(self.je.ctrls[JetDefs.F_EMUTEBUT], 8186b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi int(self.je.ctrls[JetDefs.F_ETRACK].GetValue())) 8196b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 8206b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def OnTriggerClip(self, event): 8216b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Triggers a clip """ 8226b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if self.Player is not None: 8236b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.Player.TriggerClip(self.event_id) 8246b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 8256b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def OnSetGraphOptions(self, evt): 8266b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Sets graph options """ 8276b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi IniSetValue(self.currentJetConfigFile, JetDefs.F_GRAPHLABELS, JetDefs.F_GRAPHLABELS, self.je.ctrls[JetDefs.F_GRAPHLABELS].GetValue()) 8286b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi IniSetValue(self.currentJetConfigFile, JetDefs.F_GRAPHAPPEVTS, JetDefs.F_GRAPHAPPEVTS, self.je.ctrls[JetDefs.F_GRAPHAPPEVTS].GetValue()) 8296b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi IniSetValue(self.currentJetConfigFile, JetDefs.F_GRAPHCLIPS, JetDefs.F_GRAPHCLIPS, self.je.ctrls[JetDefs.F_GRAPHCLIPS].GetValue()) 8306b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.UpdateGraph() 8316b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 8326b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def OnReplicate(self, evt): 8336b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi dlg = JetReplicate("Replicate Event") 8346b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi dlg.SetValue(JetDefs.F_RPREPLACE, True) 8356b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi dlg.SetName(self.GetValue(JetDefs.F_ENAME)) 8366b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi dlg.event_type = self.GetValue(JetDefs.F_ETYPE) 8376b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi dlg.event_max = self.segment.end 8386b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi dlg.length = MbtDifference(ConvertStrTimeToTuple(self.GetValue(JetDefs.F_ESTART)), ConvertStrTimeToTuple(self.GetValue(JetDefs.F_EEND))) 8396b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi result = dlg.ShowModal() 8406b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if result == wx.ID_OK: 8416b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.replicatePrefix = dlg.GetValue(JetDefs.F_RPPREFIX) 8426b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.lstReplicate = dlg.lstReplicate 8436b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.chkReplaceMatching = dlg.GetValue(JetDefs.F_RPREPLACE) 8446b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.EndModal(wx.ID_OK) 8456b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi else: 8466b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi dlg.Destroy() 8476b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 8486b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Triviclass JetReplicate(wx.Dialog): 8496b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Replicate dialog box """ 8506b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def __init__(self, title): 8516b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi wx.Dialog.__init__(self, None, -1, title) 8526b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.SetExtraStyle(wx.DIALOG_EX_CONTEXTHELP) 8536b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je = JetEdit(self, "REPLICATE_CTRLS", self) 8546b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 8556b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_RPINCREMENT].SetMinMbt(0,0,0) 8566b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_RPINCREMENT].SetValue((-1,-1,-1)) 8576b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_RPNUMBER].SetValue(1) 8586b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi for title, width, fld in JetDefs.REPLICATE_GRID: 8596b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_RPGRDPREVIEW].AddCol(title, width) 8606b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.lstReplicate = [] 8616b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 8626b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.SetSize(JetDefs.REPLICATE_SIZE) 8636b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.CenterOnParent() 8646b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 8656b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def OnOk(self, event): 8666b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.EndModal(wx.ID_OK) 8676b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 8686b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def GetValue(self, fld): 8696b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi return self.je.ctrls[fld].GetValue() 8706b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 8716b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def SetValue(self, fld, val): 8726b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[fld].SetValue(val) 8736b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 8746b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def SetName(self, name): 8756b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi for i in range(len(name), 1, -1): 8766b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if not name[i-1].isdigit() and name[i-1] <> ' ': 8776b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi break 8786b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi else: 8796b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi name = name[0:i-1] 8806b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.SetValue(JetDefs.F_RPPREFIX, name) 8816b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 8826b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def Validate(self): 8836b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if self.GetValue(JetDefs.F_RPPREFIX) == '': 8846b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi InfoMsg("Message", "Prefix is required.") 8856b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi return False 8866b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi return True 8876b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 8886b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def OnPreview(self, event): 8896b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if not self.Validate(): 8906b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi return 8916b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi start = MbtVal(self.GetValue(JetDefs.F_ESTART)) 8926b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi max = MbtVal(self.event_max) 8936b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi increment = MbtVal((self.je.ctrls[JetDefs.F_RPINCREMENT].GetMeasure(), self.je.ctrls[JetDefs.F_RPINCREMENT].GetBeat(), self.je.ctrls[JetDefs.F_RPINCREMENT].GetTick())) 8946b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 8956b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.lstReplicate = [] 8966b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi iTo = int(self.GetValue(JetDefs.F_RPNUMBER)) 8976b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi for i in range(iTo): 8986b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi evt_name = "%s %.2d" % (self.GetValue(JetDefs.F_RPPREFIX), i) 8996b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi s_ticks = start + (i * increment) 9006b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi s_mbt = TicksToMbt(s_ticks) 9016b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi evt_start = "%d:%d:%d" % (s_mbt[0]+1, s_mbt[1]+1, s_mbt[2]) 9026b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if self.event_type == JetDefs.E_CLIP or self.event_type == "SEGMENT": 9036b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi e_ticks = s_ticks + self.length 9046b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi e_mbt = TicksToMbt(e_ticks) 9056b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi evt_end = "%d:%d:%d" % (e_mbt[0]+1, e_mbt[1]+1, e_mbt[2]) 9066b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi else: 9076b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi e_ticks = s_ticks 9086b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi evt_end = evt_start 9096b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if s_ticks <= max and e_ticks <= max: 9106b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.lstReplicate.append((evt_name, evt_start, evt_end)) 9116b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 9126b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_RPGRDPREVIEW].DeleteAllItems() 9136b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_RPGRDPREVIEW].AddRows(self.lstReplicate) 9146b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 9156b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Triviclass JetMove(wx.Dialog): 9166b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Move events dialog box """ 9176b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def __init__(self, title): 9186b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi wx.Dialog.__init__(self, None, -1, title) 9196b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.SetExtraStyle(wx.DIALOG_EX_CONTEXTHELP) 9206b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je = JetEdit(self, "MOVE_CTRLS", self) 9216b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 9226b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_RPINCREMENT].SetMinMbt(-999,-4,-480) 9236b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_RPINCREMENT].SetValue((-1,-1,-1)) 9246b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi for title, width, fld in JetDefs.REPLICATE_GRID: 9256b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_RPGRDPREVIEW].AddCol(title, width) 9266b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.lstMove = [] 9276b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.lstMoveMbt = [] 9286b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.lstMoveItems = [] 9296b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 9306b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.SetSize(JetDefs.REPLICATE_SIZE) 9316b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.CenterOnParent() 9326b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 9336b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def OnOk(self, event): 9346b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.EndModal(wx.ID_OK) 9356b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 9366b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def GetValue(self, fld): 9376b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi return self.je.ctrls[fld].GetValue() 9386b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 9396b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def SetValue(self, fld, val): 9406b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[fld].SetValue(val) 9416b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 9426b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi def OnPreview(self, event): 9436b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi increment = MbtVal((abs(self.je.ctrls[JetDefs.F_RPINCREMENT].GetMeasure()), abs(self.je.ctrls[JetDefs.F_RPINCREMENT].GetBeat()), abs(self.je.ctrls[JetDefs.F_RPINCREMENT].GetTick()))) 9446b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if self.je.ctrls[JetDefs.F_RPINCREMENT].GetMeasure() < 0 or self.je.ctrls[JetDefs.F_RPINCREMENT].GetBeat() < 0 or self.je.ctrls[JetDefs.F_RPINCREMENT].GetTick() < 0: 9456b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi increment = 0 - increment 9466b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.lstMove = [] 9476b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.lstMoveMbt = [] 9486b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi for itm in self.lstMoveItems: 9496b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi max = MbtVal(itm[3]) 9506b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi evt_name = itm[0] 9516b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi start = MbtVal(itm[1]) 9526b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi s_ticks = start + increment 9536b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 9546b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi s_mbt = TicksToMbt(s_ticks) 9556b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi evt_start = "%d:%d:%d" % (s_mbt[0]+1, s_mbt[1]+1, s_mbt[2]) 9566b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi evt_start_save = "%d:%d:%d" % s_mbt 9576b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 9586b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi end = MbtVal(itm[2]) 9596b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi e_ticks = end + increment 9606b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi e_mbt = TicksToMbt(e_ticks) 9616b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi evt_end = "%d:%d:%d" % (e_mbt[0]+1, e_mbt[1]+1, e_mbt[2]) 9626b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi evt_end_save = "%d:%d:%d" % e_mbt 9636b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 9646b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if s_ticks <= max and e_ticks <= max and s_ticks >= 0 and e_ticks >= 0: 9656b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.lstMove.append((evt_name, evt_start, evt_end)) 9666b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.lstMoveMbt.append((evt_name, evt_start_save, evt_end_save)) 9676b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 9686b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_RPGRDPREVIEW].DeleteAllItems() 9696b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi self.je.ctrls[JetDefs.F_RPGRDPREVIEW].AddRows(self.lstMove) 9706b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 9716b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Triviif __name__ == '__main1__': 9726b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Test dialogs """ 9736b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi app = wx.PySimpleApp() 9746b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 9756b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi #dlg = JetOpen() 9766b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi #dlg = JetPropertiesDialog() 9776b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi #dlg = ExportDialog("Export Jet File") 9786b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi #dlg = JetAbout() 9796b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 9806b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi dlg = JetReplicate("Replicate Event") 9816b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi dlg.SetValue(JetDefs.F_RPREPLACE, True) 9826b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi dlg.event_max = "5:0:0" 9836b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi dlg.event_type = JetDefs.E_APP 9846b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi dlg.length = 480 9856b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi dlg.SetName("abc 02") 9866b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi result = dlg.ShowModal() 9876b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi if result == wx.ID_OK: 9886b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi print("OK") 9896b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 9906b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi dlg.Destroy() 9916b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 9926b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Triviif __name__ == '__main1__': 9936b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Test Segment dialog """ 9946b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi app = wx.PySimpleApp() 9956b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 9966b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi helpProvider = wx.SimpleHelpProvider() 9976b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi wx.HelpProvider_Set(helpProvider) 9986b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 9996b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi dlg = SegEdit("Segments", JetDefs.UNTITLED_FILE) 10006b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi dlg.SetValue(JetDefs.F_SEGNAME, "Test Segment Name") 10016b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi dlg.SetValue(JetDefs.F_MIDIFILE, '/Users/BHruska/JetContent/jenn_Burning Line.mid') 10026b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi dlg.SetValue(JetDefs.F_MIDIFILE, 'C:/_Data/JetCreator/JetDemo1/jenn_Burning Line.mid') 10036b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi dlg.SetValue(JetDefs.F_DLSFILE, '') 10046b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi dlg.SetValue(JetDefs.F_START, '4:0:0') 10056b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi dlg.SetValue(JetDefs.F_END, '8:0:0') 10066b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi dlg.SetValue(JetDefs.F_QUANTIZE, 6) 10076b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 10086b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi result = dlg.ShowModal() 10096b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi dlg.Destroy() 10106b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 10116b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Triviif __name__ == '__main__': 10126b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi """ Test Event dialog """ 10136b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi app = wx.PySimpleApp() 10146b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 10156b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi jetevents = [] 10166b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 10176b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi segment = JetSegment("Test Segment Name", 'C:/_Data/JetCreator/JetDemo1/jenn_Burning Line.mid', 10186b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi '0:0:0', '4:0:0', None, 10196b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi "Test Segment Name", 6, jetevents, 10206b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi '', None, 0,0,3) 10216b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 10226b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi dlg = EventEdit("Event Edit", JetDefs.UNTITLED_FILE) 10236b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi dlg.SetValue(JetDefs.F_ENAME, "Test Event Name") 10246b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi dlg.SetValue(JetDefs.F_ETYPE, "TriggerClip") 10256b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi dlg.SetSegment(segment) 10266b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 10276b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi result = dlg.ShowModal() 10286b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi dlg.Destroy() 10296b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 10306b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 10316b065d0f7161fe54e6f58fd2b8ad6c650b2d3657Jean-Michel Trivi 1032