mirror of
https://github.com/dcs-liberation/dcs_liberation.git
synced 2025-11-10 14:22:26 +00:00
Implemented top bar with turn counter and budget info. Added CSS stylesheet.
This commit is contained in:
parent
dc91f5004e
commit
2428d39308
@ -20,13 +20,19 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
# Load stuff
|
# Load stuff
|
||||||
persistency.setup(sys.argv[1])
|
persistency.setup(sys.argv[1])
|
||||||
|
|
||||||
|
css = ""
|
||||||
|
with open("./qt_ui/stylesheets/style.css") as stylesheet:
|
||||||
|
css = stylesheet.read()
|
||||||
|
|
||||||
sleep(0.5)
|
sleep(0.5)
|
||||||
uiconstants.load_icons()
|
uiconstants.load_icons()
|
||||||
app.processEvents()
|
app.processEvents()
|
||||||
|
|
||||||
# Start window
|
# Start window
|
||||||
window = QLiberationWindow()
|
window = QLiberationWindow()
|
||||||
|
window.setStyleSheet(css)
|
||||||
window.show()
|
window.show()
|
||||||
splash.finish(window)
|
|
||||||
|
|
||||||
|
splash.finish(window)
|
||||||
sys.exit(app.exec_())
|
sys.exit(app.exec_())
|
||||||
19
qt_ui/stylesheets/style.css
Normal file
19
qt_ui/stylesheets/style.css
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
|
||||||
|
|
||||||
|
QLiberationWindow{
|
||||||
|
}
|
||||||
|
|
||||||
|
QTopPanel,
|
||||||
|
QTopPanel *{
|
||||||
|
background-color: #4E5760;
|
||||||
|
color: white;
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPushButton[style="btn-primary"]{
|
||||||
|
background-color:#699245;
|
||||||
|
color:white;
|
||||||
|
padding: 21px 5px 21px 5px;
|
||||||
|
margin-top: 6px;
|
||||||
|
}
|
||||||
29
qt_ui/widgets/QBudgetBox.py
Normal file
29
qt_ui/widgets/QBudgetBox.py
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
from PySide2.QtWidgets import QLabel, QHBoxLayout, QGroupBox
|
||||||
|
|
||||||
|
import qt_ui.uiconstants as CONST
|
||||||
|
|
||||||
|
|
||||||
|
class QBudgetBox(QGroupBox):
|
||||||
|
"""
|
||||||
|
UI Component to display current budget and player's money
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super(QBudgetBox, self).__init__("Budget")
|
||||||
|
|
||||||
|
self.money_icon = QLabel()
|
||||||
|
self.money_icon.setPixmap(CONST.ICONS["Money"])
|
||||||
|
self.money_amount = QLabel()
|
||||||
|
|
||||||
|
self.layout = QHBoxLayout()
|
||||||
|
self.layout.addWidget(self.money_icon)
|
||||||
|
self.layout.addWidget(self.money_amount)
|
||||||
|
self.setLayout(self.layout)
|
||||||
|
|
||||||
|
def setBudget(self, budget, reward):
|
||||||
|
"""
|
||||||
|
Set the money amount to display
|
||||||
|
:param budget: Current money available
|
||||||
|
:param reward: Planned reward for next turn
|
||||||
|
"""
|
||||||
|
self.money_amount.setText(str(budget) + "M (+" + str(reward) + "M)")
|
||||||
31
qt_ui/widgets/QTopPanel.py
Normal file
31
qt_ui/widgets/QTopPanel.py
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
from PySide2.QtWidgets import QFrame, QHBoxLayout, QPushButton
|
||||||
|
|
||||||
|
from game import Game
|
||||||
|
from qt_ui.widgets.QBudgetBox import QBudgetBox
|
||||||
|
from qt_ui.widgets.QTurnCounter import QTurnCounter
|
||||||
|
|
||||||
|
|
||||||
|
class QTopPanel(QFrame):
|
||||||
|
|
||||||
|
def __init__(self, game: Game):
|
||||||
|
super(QTopPanel, self).__init__()
|
||||||
|
self.game = game
|
||||||
|
self.init_ui()
|
||||||
|
|
||||||
|
def init_ui(self):
|
||||||
|
|
||||||
|
self.turnCounter = QTurnCounter()
|
||||||
|
self.turnCounter.setCurrentTurn(self.game.turn, self.game.current_day)
|
||||||
|
|
||||||
|
self.budgetBox = QBudgetBox()
|
||||||
|
self.budgetBox.setBudget(self.game.budget, self.game.budget_reward_amount)
|
||||||
|
|
||||||
|
self.passTurn = QPushButton("Pass Turn")
|
||||||
|
self.passTurn.setProperty("style", "btn-primary")
|
||||||
|
|
||||||
|
self.layout = QHBoxLayout()
|
||||||
|
self.layout.addStretch(1)
|
||||||
|
self.layout.addWidget(self.turnCounter)
|
||||||
|
self.layout.addWidget(self.budgetBox)
|
||||||
|
self.layout.addWidget(self.passTurn)
|
||||||
|
self.setLayout(self.layout)
|
||||||
35
qt_ui/widgets/QTurnCounter.py
Normal file
35
qt_ui/widgets/QTurnCounter.py
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
import datetime
|
||||||
|
|
||||||
|
from PySide2.QtWidgets import QLabel, QHBoxLayout, QGroupBox
|
||||||
|
|
||||||
|
import qt_ui.uiconstants as CONST
|
||||||
|
|
||||||
|
|
||||||
|
class QTurnCounter(QGroupBox):
|
||||||
|
"""
|
||||||
|
UI Component to display current turn and time info
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super(QTurnCounter, self).__init__("Turn")
|
||||||
|
|
||||||
|
self.icons = [CONST.ICONS["Dawn"], CONST.ICONS["Day"], CONST.ICONS["Dusk"], CONST.ICONS["Night"]]
|
||||||
|
|
||||||
|
self.daytime_icon = QLabel()
|
||||||
|
self.daytime_icon.setPixmap(self.icons[0])
|
||||||
|
self.turn_info = QLabel()
|
||||||
|
|
||||||
|
self.layout = QHBoxLayout()
|
||||||
|
self.layout.addWidget(self.daytime_icon)
|
||||||
|
self.layout.addWidget(self.turn_info)
|
||||||
|
self.setLayout(self.layout)
|
||||||
|
|
||||||
|
def setCurrentTurn(self, turn: int, current_day: datetime):
|
||||||
|
"""
|
||||||
|
Set the money amount to display
|
||||||
|
:arg turn Current turn number
|
||||||
|
:arg current_day Current day
|
||||||
|
"""
|
||||||
|
self.daytime_icon.setPixmap(self.icons[turn % 4])
|
||||||
|
self.turn_info.setText(current_day.strftime("%d %b %Y"))
|
||||||
|
self.setTitle("Turn " + str(turn))
|
||||||
@ -2,16 +2,15 @@ from typing import Dict
|
|||||||
|
|
||||||
from PySide2.QtCore import Qt
|
from PySide2.QtCore import Qt
|
||||||
from PySide2.QtGui import QPixmap, QBrush, QColor, QWheelEvent, QPen, QFont
|
from PySide2.QtGui import QPixmap, QBrush, QColor, QWheelEvent, QPen, QFont
|
||||||
from PySide2.QtWidgets import QWidget, QGraphicsWidget, QGraphicsView, QFrame, QGraphicsTextItem
|
from PySide2.QtWidgets import QGraphicsView, QFrame
|
||||||
|
|
||||||
from gen import Conflict
|
from gen import Conflict
|
||||||
from qt_ui.widgets.QMapControlPoint import QMapControlPoint
|
from qt_ui.widgets.map.QMapControlPoint import QMapControlPoint
|
||||||
from qt_ui.widgets.QMapGroundObject import QMapGroundObject
|
from qt_ui.widgets.map.QMapGroundObject import QMapGroundObject
|
||||||
from qt_ui.windows.QLiberationScene import QLiberationScene
|
from qt_ui.widgets.map.QLiberationScene import QLiberationScene
|
||||||
from dcs import Point
|
from dcs import Point
|
||||||
|
|
||||||
from theater import ControlPoint
|
from theater import ControlPoint
|
||||||
from userdata import persistency
|
|
||||||
from game import Game
|
from game import Game
|
||||||
import qt_ui.uiconstants as CONST
|
import qt_ui.uiconstants as CONST
|
||||||
|
|
||||||
@ -49,11 +49,8 @@ class QMapControlPoint(QGraphicsRectItem):
|
|||||||
|
|
||||||
def contextMenuEvent(self, event: QGraphicsSceneContextMenuEvent):
|
def contextMenuEvent(self, event: QGraphicsSceneContextMenuEvent):
|
||||||
menu = QMenu("Menu", self.parent)
|
menu = QMenu("Menu", self.parent)
|
||||||
menu.addAction("Attack")
|
menu.addAction("Plan a strike on " + self.model.name + " airbase")
|
||||||
menu.addAction("See Info")
|
menu.addAction("See available intel")
|
||||||
menu.addSeparator()
|
|
||||||
menu.addAction("Show Base Info")
|
|
||||||
menu.addAction("Show Base Info")
|
|
||||||
menu.exec_(event.screenPos())
|
menu.exec_(event.screenPos())
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@ -1,10 +1,10 @@
|
|||||||
from PySide2.QtGui import QIcon
|
from PySide2.QtGui import QIcon
|
||||||
from PySide2.QtWidgets import QWidget, QPushButton, QHBoxLayout, QVBoxLayout, QMenuBar, QMainWindow, QAction, QToolBar, \
|
from PySide2.QtWidgets import QWidget, QHBoxLayout, QVBoxLayout, QMainWindow, QAction, QFrame
|
||||||
QFrame
|
|
||||||
import webbrowser
|
import webbrowser
|
||||||
|
|
||||||
from qt_ui.uiconstants import URLS
|
from qt_ui.uiconstants import URLS
|
||||||
from qt_ui.windows.QLiberationMap import QLiberationMap
|
from qt_ui.widgets.QTopPanel import QTopPanel
|
||||||
|
from qt_ui.widgets.map.QLiberationMap import QLiberationMap
|
||||||
import qt_ui.uiconstants as CONST
|
import qt_ui.uiconstants as CONST
|
||||||
from qt_ui.windows.QNewGameWizard import NewGameWizard
|
from qt_ui.windows.QNewGameWizard import NewGameWizard
|
||||||
from userdata import persistency
|
from userdata import persistency
|
||||||
@ -24,7 +24,6 @@ class QLiberationWindow(QMainWindow):
|
|||||||
self.setWindowIcon(QIcon("../resources/icon.png"))
|
self.setWindowIcon(QIcon("../resources/icon.png"))
|
||||||
self.statusBar().showMessage('Ready')
|
self.statusBar().showMessage('Ready')
|
||||||
|
|
||||||
|
|
||||||
self.initActions()
|
self.initActions()
|
||||||
self.init_menubar()
|
self.init_menubar()
|
||||||
self.init_toolbar()
|
self.init_toolbar()
|
||||||
@ -36,9 +35,7 @@ class QLiberationWindow(QMainWindow):
|
|||||||
|
|
||||||
vbox = QVBoxLayout()
|
vbox = QVBoxLayout()
|
||||||
vbox.setMargin(0)
|
vbox.setMargin(0)
|
||||||
frame = QFrame()
|
vbox.addWidget(QTopPanel(self.game))
|
||||||
frame.setFrameShape(frame.Box)
|
|
||||||
vbox.addWidget(frame)
|
|
||||||
vbox.addLayout(hbox)
|
vbox.addLayout(hbox)
|
||||||
|
|
||||||
central_widget = QWidget()
|
central_widget = QWidget()
|
||||||
|
|||||||
@ -1,6 +0,0 @@
|
|||||||
from PySide2.QtWidgets import QFrame
|
|
||||||
|
|
||||||
|
|
||||||
class QTopPanel(QFrame):
|
|
||||||
|
|
||||||
pass
|
|
||||||
Loading…
x
Reference in New Issue
Block a user