mirror of
https://github.com/dcs-liberation/dcs_liberation.git
synced 2025-11-10 14:22:26 +00:00
added a customizable plugin system
- the base LUA functionality has been implemented as a mandatory plugin - the jtacautolase functionality has been implemented as a plugin - added a VEAF framework plugin The plugins have GUI elements in the Settings window.
This commit is contained in:
90
plugin/veaf_plugin.py
Normal file
90
plugin/veaf_plugin.py
Normal file
@@ -0,0 +1,90 @@
|
||||
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")
|
||||
|
||||
Reference in New Issue
Block a user