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
|
||||
persistency.setup(sys.argv[1])
|
||||
|
||||
css = ""
|
||||
with open("./qt_ui/stylesheets/style.css") as stylesheet:
|
||||
css = stylesheet.read()
|
||||
|
||||
sleep(0.5)
|
||||
uiconstants.load_icons()
|
||||
app.processEvents()
|
||||
|
||||
# Start window
|
||||
window = QLiberationWindow()
|
||||
window.setStyleSheet(css)
|
||||
window.show()
|
||||
splash.finish(window)
|
||||
|
||||
splash.finish(window)
|
||||
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.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 qt_ui.widgets.QMapControlPoint import QMapControlPoint
|
||||
from qt_ui.widgets.QMapGroundObject import QMapGroundObject
|
||||
from qt_ui.windows.QLiberationScene import QLiberationScene
|
||||
from qt_ui.widgets.map.QMapControlPoint import QMapControlPoint
|
||||
from qt_ui.widgets.map.QMapGroundObject import QMapGroundObject
|
||||
from qt_ui.widgets.map.QLiberationScene import QLiberationScene
|
||||
from dcs import Point
|
||||
|
||||
from theater import ControlPoint
|
||||
from userdata import persistency
|
||||
from game import Game
|
||||
import qt_ui.uiconstants as CONST
|
||||
|
||||
@ -49,11 +49,8 @@ class QMapControlPoint(QGraphicsRectItem):
|
||||
|
||||
def contextMenuEvent(self, event: QGraphicsSceneContextMenuEvent):
|
||||
menu = QMenu("Menu", self.parent)
|
||||
menu.addAction("Attack")
|
||||
menu.addAction("See Info")
|
||||
menu.addSeparator()
|
||||
menu.addAction("Show Base Info")
|
||||
menu.addAction("Show Base Info")
|
||||
menu.addAction("Plan a strike on " + self.model.name + " airbase")
|
||||
menu.addAction("See available intel")
|
||||
menu.exec_(event.screenPos())
|
||||
|
||||
@property
|
||||
@ -1,10 +1,10 @@
|
||||
from PySide2.QtGui import QIcon
|
||||
from PySide2.QtWidgets import QWidget, QPushButton, QHBoxLayout, QVBoxLayout, QMenuBar, QMainWindow, QAction, QToolBar, \
|
||||
QFrame
|
||||
from PySide2.QtWidgets import QWidget, QHBoxLayout, QVBoxLayout, QMainWindow, QAction, QFrame
|
||||
import webbrowser
|
||||
|
||||
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
|
||||
from qt_ui.windows.QNewGameWizard import NewGameWizard
|
||||
from userdata import persistency
|
||||
@ -24,7 +24,6 @@ class QLiberationWindow(QMainWindow):
|
||||
self.setWindowIcon(QIcon("../resources/icon.png"))
|
||||
self.statusBar().showMessage('Ready')
|
||||
|
||||
|
||||
self.initActions()
|
||||
self.init_menubar()
|
||||
self.init_toolbar()
|
||||
@ -36,9 +35,7 @@ class QLiberationWindow(QMainWindow):
|
||||
|
||||
vbox = QVBoxLayout()
|
||||
vbox.setMargin(0)
|
||||
frame = QFrame()
|
||||
frame.setFrameShape(frame.Box)
|
||||
vbox.addWidget(frame)
|
||||
vbox.addWidget(QTopPanel(self.game))
|
||||
vbox.addLayout(hbox)
|
||||
|
||||
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