Skip to content

Commit 1e1f936

Browse files
committed
bugfix: underlying c++ objects get deleted too soon
1 parent 2ef1390 commit 1e1f936

File tree

1 file changed

+15
-13
lines changed

1 file changed

+15
-13
lines changed

midicontroller/plugins/scoregenerators/simplegenerator/simplegenerator.py

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -35,36 +35,36 @@ def get_ui(self, parent, name):
3535
Panel = QtGui.QWidget(parent)
3636
ui = Ui_Panel()
3737
ui.setupUi(Panel)
38-
self.instances[name] = ui
38+
self.instances[name] = (ui, Panel)
3939
return Panel
4040

4141
def get_state_as_dict(self):
4242
result = {}
4343
for name in self.instances:
44-
Panel = self.instances[name]
44+
ui = self.instances[name][0]
4545
result[name] = {}
46-
result[name]["midiChannelEdit"] = "{0}".format(Panel.midiChannelEdit.text())
47-
result[name]["allowedVelsEdit"] = "{0}".format(Panel.allowedVelsEdit.text())
48-
result[name]["allowedNotesEdit"] = "{0}".format(Panel.allowedNotesEdit.text())
46+
result[name]["midiChannelEdit"] = "{0}".format(ui.midiChannelEdit.text())
47+
result[name]["allowedVelsEdit"] = "{0}".format(ui.allowedVelsEdit.text())
48+
result[name]["allowedNotesEdit"] = "{0}".format(ui.allowedNotesEdit.text())
4949
return result
5050

5151
def set_state_from_dict(self, dct):
5252
for name in dct:
53-
Panel = self.instances[name]
54-
Panel.midiChannelEdit.setText("{0}".format(dct[name]["midiChannelEdit"]))
55-
Panel.allowedVelsEdit.setText("{0}".format(dct[name]["allowedVelsEdit"]))
56-
Panel.allowedNotesEdit.setText("{0}".format(dct[name]["allowedNotesEdit"]))
53+
ui = self.instances[name][0]
54+
ui.midiChannelEdit.setText("{0}".format(dct[name]["midiChannelEdit"]))
55+
ui.allowedVelsEdit.setText("{0}".format(dct[name]["allowedVelsEdit"]))
56+
ui.allowedNotesEdit.setText("{0}".format(dct[name]["allowedNotesEdit"]))
5757

5858
def trigger(self, name, midiOuts, notequeue, value):
59-
Panel = self.instances[name]
60-
midichan = self.parseutil.parse_midi_channel_list(Panel.midiChannelEdit.text())
59+
ui = self.instances[name][0]
60+
midichan = self.parseutil.parse_midi_channel_list(ui.midiChannelEdit.text())
6161
if not midichan:
6262
return
63-
vels = self.parseutil.parse_number_ranges(Panel.allowedVelsEdit.text())
63+
vels = self.parseutil.parse_number_ranges(ui.allowedVelsEdit.text())
6464

6565
if not vels:
6666
return
67-
values = self.parseutil.parse_number_ranges(Panel.allowedNotesEdit.text())
67+
values = self.parseutil.parse_number_ranges(ui.allowedNotesEdit.text())
6868
if value:
6969
values.append(value)
7070
if not values:
@@ -85,4 +85,6 @@ def trigger(self, name, midiOuts, notequeue, value):
8585
midiOuts[chan].send_message(msg)
8686

8787
def stop(self, name):
88+
if name in self.instances:
89+
del self.instances[name]
8890
pass

0 commit comments

Comments
 (0)