from PySide2.QtCore import QSize, Qt, QItemSelectionModel, QPoint from PySide2.QtWidgets import QLabel, QDialog, QGridLayout, QListView, QStackedLayout, QComboBox, QWidget, \ QAbstractItemView, QPushButton, QGroupBox, QCheckBox, QVBoxLayout, QSpinBox from .base_plugin import BasePlugin class VeafPlugin(BasePlugin): nameInUI:str = "VEAF framework" nameInSettings:str = "plugin.veaf" enabledDefaultValue:bool = False #Allow spawn option nameInUI_allowSpawn:str = "Allow units spawn via markers and CTLD (not implemented yet)" nameInSettings_allowSpawn:str = "plugin.veaf.allowSpawn" def setupUI(self, settingsWindow, row:int): # call the base method to add the plugin selection checkbox super().setupUI(settingsWindow, row) if settingsWindow.pluginsOptionsPageLayout: self.optionsGroup = QGroupBox(self.nameInUI) optionsGroupLayout = QGridLayout(); optionsGroupLayout.setAlignment(Qt.AlignTop) self.optionsGroup.setLayout(optionsGroupLayout) settingsWindow.pluginsOptionsPageLayout.addWidget(self.optionsGroup) # allow spawn of objects if not self.nameInSettings_allowSpawn in self.settings.plugins: self.settings.plugins[self.nameInSettings_allowSpawn] = True self.uiWidget_allowSpawn = QCheckBox() self.uiWidget_allowSpawn.setChecked(self.settings.plugins[self.nameInSettings_allowSpawn]) self.uiWidget_allowSpawn.setEnabled(False) self.uiWidget_allowSpawn.toggled.connect(lambda: self.applySetting(settingsWindow)) optionsGroupLayout.addWidget(QLabel(self.nameInUI_allowSpawn), 0, 0) optionsGroupLayout.addWidget(self.uiWidget_allowSpawn, 0, 1, Qt.AlignRight) # disable or enable the UI in the plugins special page self.enableOptionsGroup() def enableOptionsGroup(self): pluginEnabled = self.uiWidget.isChecked() self.optionsGroup.setEnabled(pluginEnabled) def applySetting(self, settingsWindow): # call the base method to apply the plugin selection checkbox value super().applySetting(settingsWindow) # save the "allow spawn" option self.settings.plugins[self.nameInSettings_allowSpawn] = self.uiWidget_allowSpawn.isChecked() # disable or enable the UI in the plugins special page self.enableOptionsGroup() def injectScripts(self, operation): if super().injectScripts(operation): # bypass JTACAutoLase operation.bypassPluginScript("veaf", "jtacautolase") # inject the required scripts operation.injectPluginScript("veaf", "src\\scripts\\mist.lua", "mist") operation.injectPluginScript("veaf", "src\\scripts\\Moose.lua", "moose") operation.injectPluginScript("veaf", "src\\scripts\\CTLD.lua", "ctld") #operation.injectPluginScript("veaf", "src\\scripts\\NIOD.lua", "niod") operation.injectPluginScript("veaf", "src\\scripts\\WeatherMark.lua", "weathermark") operation.injectPluginScript("veaf", "src\\scripts\\veaf.lua", "veaf") operation.injectPluginScript("veaf", "src\\scripts\\dcsUnits.lua", "dcsunits") operation.injectPluginScript("veaf", "src\\scripts\\veafAssets.lua", "veafassets") operation.injectPluginScript("veaf", "src\\scripts\\veafCarrierOperations.lua", "veafcarrieroperations") operation.injectPluginScript("veaf", "src\\scripts\\veafCasMission.lua", "veafcasmission") operation.injectPluginScript("veaf", "src\\scripts\\veafCombatMission.lua", "veafcombatmission") operation.injectPluginScript("veaf", "src\\scripts\\veafCombatZone.lua", "veafcombatzone") operation.injectPluginScript("veaf", "src\\scripts\\veafGrass.lua", "veafgrass") operation.injectPluginScript("veaf", "src\\scripts\\veafInterpreter.lua", "veafinterpreter") operation.injectPluginScript("veaf", "src\\scripts\\veafMarkers.lua", "veafmarkers") operation.injectPluginScript("veaf", "src\\scripts\\veafMove.lua", "veafmove") operation.injectPluginScript("veaf", "src\\scripts\\veafNamedPoints.lua", "veafnamedpoints") operation.injectPluginScript("veaf", "src\\scripts\\veafRadio.lua", "veafradio") operation.injectPluginScript("veaf", "src\\scripts\\veafRemote.lua", "veafremote") operation.injectPluginScript("veaf", "src\\scripts\\veafSecurity.lua", "veafsecurity") operation.injectPluginScript("veaf", "src\\scripts\\veafShortcuts.lua", "veafshortcuts") operation.injectPluginScript("veaf", "src\\scripts\\veafSpawn.lua", "veafspawn") operation.injectPluginScript("veaf", "src\\scripts\\veafTransportMission.lua", "veaftransportmission") operation.injectPluginScript("veaf", "src\\scripts\\veafUnits.lua", "veafunits") def injectConfiguration(self, operation): if super().injectConfiguration(operation): operation.injectPluginScript("veaf", "src\\config\\missionConfig.lua", "missionconfig")