diff --git a/source/carla_host.py b/source/carla_host.py index acf527803..27723b796 100644 --- a/source/carla_host.py +++ b/source/carla_host.py @@ -216,6 +216,8 @@ class HostWindow(QMainWindow, PluginEditParentMeta): # ---------------------------------------------------------------------------------------------------- # Set up GUI (rack) + self.ui.listWidget.setHost(self.host) + sb = self.ui.listWidget.verticalScrollBar() self.ui.rackScrollBar.setMinimum(sb.minimum()) self.ui.rackScrollBar.setMaximum(sb.maximum()) @@ -800,13 +802,13 @@ class HostWindow(QMainWindow, PluginEditParentMeta): @pyqtSlot(int, str) def slot_handlePluginAddedCallback(self, pluginId, pluginName): - #pitem = CarlaRackItem(self.fRack, pluginId, self.getSavedSettings()[CARLA_KEY_MAIN_USE_CUSTOM_SKINS]) + pitem = self.ui.listWidget.createItem(pluginId, self.fSavedSettings[CARLA_KEY_MAIN_USE_CUSTOM_SKINS]) - #self.fPluginList.append(pitem) + self.fPluginList.append(pitem) self.fPluginCount += 1 - #if not self.isProjectLoading(): - #pitem.getWidget().setActive(True, True, True) + if not self.fIsProjectLoading: + pitem.getWidget().setActive(True, True, True) self.ui.act_plugin_remove_all.setEnabled(self.fPluginCount > 0) @@ -817,20 +819,20 @@ class HostWindow(QMainWindow, PluginEditParentMeta): if pluginId in self.fSelectedPlugins: self.clearSideStuff() - #pitem = self.getPluginItem(pluginId) + pitem = self.getPluginItem(pluginId) self.fPluginCount -= 1 - #self.fPluginList.pop(pluginId) - #self.fRack.takeItem(pluginId) + self.fPluginList.pop(pluginId) + self.ui.listWidget.takeItem(pluginId) - #if pitem is not None: - #pitem.closeEditDialog() - #del pitem + if pitem is not None: + pitem.close() + del pitem - ## push all plugins 1 slot back - #for i in range(pluginId, self.fPluginCount): - #pitem = self.fPluginList[i] - #pitem.setPluginId(i) + # push all plugins 1 slot back + for i in range(pluginId, self.fPluginCount): + pitem = self.fPluginList[i] + pitem.setPluginId(i) self.ui.act_plugin_remove_all.setEnabled(self.fPluginCount > 0) diff --git a/source/widgets/racklistwidget.py b/source/widgets/racklistwidget.py index 1be9ec9b1..10b583237 100644 --- a/source/widgets/racklistwidget.py +++ b/source/widgets/racklistwidget.py @@ -40,7 +40,7 @@ from carla_skin import createPluginSlot # ------------------------------------------------------------------------------------------------------------ # Rack Widget item -class CarlaRackItem(QListWidgetItem): +class RackListItem(QListWidgetItem): kRackItemType = QListWidgetItem.UserType + 1 def __init__(self, parent, pluginId, useSkins): @@ -50,6 +50,7 @@ class CarlaRackItem(QListWidgetItem): if False: # kdevelop likes this :) from carla_backend import CarlaHostMeta + parent = RackListWidget() host = CarlaHostMeta() self.host = host @@ -71,8 +72,9 @@ class CarlaRackItem(QListWidgetItem): # -------------------------------------------------------------------------------------------------------- - def closeEditDialog(self): + def close(self): self.fWidget.fEditDialog.close() + self.fWidget.close() def getEditDialog(self): return self.fWidget.fEditDialog @@ -90,10 +92,11 @@ class CarlaRackItem(QListWidgetItem): def recreateWidget(self): if self.fWidget is not None: - #self.fWidget.fEditDialog.close() + self.fWidget.fEditDialog.close() + self.fWidget.close() del self.fWidget - self.fWidget = createPluginSlot(self.fParent, self.fParent.host, self.fPluginId, self.fUseSkins) + self.fWidget = createPluginSlot(self.fParent, self.host, self.fPluginId, self.fUseSkins) self.fWidget.setFixedHeight(self.fWidget.getFixedHeight()) self.setSizeHint(QSize(640, self.fWidget.getFixedHeight())) @@ -106,6 +109,13 @@ class CarlaRackItem(QListWidgetItem): class RackListWidget(QListWidget): def __init__(self, parent): QListWidget.__init__(self, parent) + self.host = None + + if False: + # kdevelop likes this :) + from carla_backend import CarlaHostMeta + host = CarlaHostMeta() + self.host = host self.fSupportedExtensions = [] self.fWasLastDragValid = False @@ -129,6 +139,14 @@ class RackListWidget(QListWidget): # -------------------------------------------------------------------------------------------------------- + def createItem(self, pluginId, useSkins): + return RackListItem(self, pluginId, useSkins) + + def setHost(self, host): + self.host = host + + # -------------------------------------------------------------------------------------------------------- + def paintEvent(self, event): painter = QPainter(self.viewport()) painter.drawTiledPixmap(0, 0, self.fPixmapWidth, self.height(), self.fPixmapL)