From b7d8e9517d0131c6c4f1e6809d13f1dc47d1478e Mon Sep 17 00:00:00 2001 From: chroming Date: Mon, 5 Mar 2018 01:36:19 +0800 Subject: [PATCH 01/57] add demo pyqt ui --- ora/gui/__init__.py | 0 ora/gui/demo.ui | 235 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 235 insertions(+) create mode 100644 ora/gui/__init__.py create mode 100644 ora/gui/demo.ui diff --git a/ora/gui/__init__.py b/ora/gui/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ora/gui/demo.ui b/ora/gui/demo.ui new file mode 100644 index 0000000..1b841a0 --- /dev/null +++ b/ora/gui/demo.ui @@ -0,0 +1,235 @@ + + + MainWindow + + + + 0 + 0 + 619 + 497 + + + + MainWindow + + + + + + 14 + 14 + 569 + 459 + + + + Qt::LeftToRight + + + QTabWidget::West + + + 0 + + + + Tab 1 + + + + + 15 + 10 + 253 + 381 + + + + + 8 + + + + + 30 + 30 + + + + true + + + + Video1 + + + + :/newPrefix/D:/GitHub/OverwatchDataAnalysis/images/abilities/ana/1.png + + + + + + Video2 + + + + :/newPrefix/D:/GitHub/OverwatchDataAnalysis/images/abilities/bastion/3.png + + + + + + + + 280 + 18 + 115 + 29 + + + + VIDEO + + + + + + 282 + 62 + 113 + 20 + + + + + + + 412 + 62 + 113 + 20 + + + + + + + 412 + 92 + 113 + 20 + + + + + + + 282 + 92 + 113 + 20 + + + + + + + 412 + 122 + 113 + 20 + + + + + + + 282 + 122 + 113 + 20 + + + + + + + 284 + 162 + 71 + 16 + + + + CheckBox + + + + + + 284 + 188 + 71 + 16 + + + + CheckBox + + + + + + 284 + 214 + 71 + 16 + + + + CheckBox + + + + + + 16 + 402 + 425 + 31 + + + + Save + + + + + + 448 + 402 + 75 + 29 + + + + Analyze + + + + + + Tab 2 + + + + + + + + + + + From 07c73fc101d901eb7476e3ed8223d85247485251 Mon Sep 17 00:00:00 2001 From: chroming Date: Mon, 5 Mar 2018 01:53:01 +0800 Subject: [PATCH 02/57] update demo ui --- ora/gui/demo.ui | 114 +++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 108 insertions(+), 6 deletions(-) diff --git a/ora/gui/demo.ui b/ora/gui/demo.ui index 1b841a0..1de7803 100644 --- a/ora/gui/demo.ui +++ b/ora/gui/demo.ui @@ -6,8 +6,8 @@ 0 0 - 619 - 497 + 608 + 491 @@ -17,10 +17,10 @@ - 14 - 14 + 16 + 12 569 - 459 + 461 @@ -30,9 +30,15 @@ QTabWidget::West - 0 + 1 + + + 544 + 453 + + Tab 1 @@ -219,10 +225,106 @@ + + + Page + + + + + 12 + 10 + 217 + 37 + + + + + Adobe Devanagari + 20 + + + + ORA Setting + + + + + + 16 + 128 + 93 + 16 + + + + Analyzer FPS + + + + + + 14 + 152 + 255 + 16 + + + + Automatically check for update + + + Tab 2 + + + + 6 + 6 + 253 + 437 + + + + Copyright + + + + + + 270 + 52 + 113 + 97 + + + + + + + 396 + 52 + 113 + 97 + + + + + + + 274 + 8 + 103 + 41 + + + + Donation Info + + From 4ff5810279f7ff1cb29eb1d6d2dbc0b52cebdcbd Mon Sep 17 00:00:00 2001 From: chroming Date: Sun, 11 Mar 2018 22:32:40 +0800 Subject: [PATCH 03/57] update pyqt gui --- ora/gui/gui.py | 35 ++++ ora/gui/{demo.ui => main.ui} | 302 +++++++++++++++++++++++++---------- ora/gui/widget.py | 62 +++++++ 3 files changed, 313 insertions(+), 86 deletions(-) create mode 100644 ora/gui/gui.py rename ora/gui/{demo.ui => main.ui} (53%) create mode 100644 ora/gui/widget.py diff --git a/ora/gui/gui.py b/ora/gui/gui.py new file mode 100644 index 0000000..b873f63 --- /dev/null +++ b/ora/gui/gui.py @@ -0,0 +1,35 @@ +from PyQt5 import uic + +from widget import * + +windowui, QtBaseClass = uic.loadUiType('main.ui') + + +class MainUi(QtWidgets.QMainWindow, windowui): + def __init__(self): + super(MainUi, self).__init__() + self.setupUi(self) + self._add_custome_item(self.video_listwidget, '111', '222', 'replay.png') + self._init_connect() + + def _init_connect(self): + self.label_listwidget.clicked.connect(lambda: self.main_stackedwidget.setCurrentIndex(self.label_listwidget.currentRow())) + + def _init_default(self): + self.label_listwidget.setCurrentRow(0) + self.main_stackedwidget.setCurrentIndex(0) + + @staticmethod + def _add_custome_item(listwidget, up_str, down_str, icon_path): + citem = CustomeItem(listwidget, up_str, down_str, icon_path) + item = QtWidgets.QListWidgetItem(listwidget) + item.setSizeHint(citem.sizeHint()) + listwidget.addItem(item) + listwidget.setItemWidget(item, citem) + + +if __name__ == '__main__': + app = QtWidgets.QApplication(sys.argv) + w = MainUi() + w.show() + sys.exit(app.exec_()) \ No newline at end of file diff --git a/ora/gui/demo.ui b/ora/gui/main.ui similarity index 53% rename from ora/gui/demo.ui rename to ora/gui/main.ui index 1de7803..52c24e1 100644 --- a/ora/gui/demo.ui +++ b/ora/gui/main.ui @@ -6,19 +6,19 @@ 0 0 - 608 - 491 + 723 + 640 MainWindow - + - 16 - 12 + 140 + 10 569 461 @@ -26,29 +26,20 @@ Qt::LeftToRight - - QTabWidget::West + + QFrame::NoFrame - 1 + 2 - - - - 544 - 453 - - - - Tab 1 - - + + - 15 - 10 + 0 + 30 253 - 381 + 421 @@ -65,45 +56,30 @@ true - - - Video1 - - - - :/newPrefix/D:/GitHub/OverwatchDataAnalysis/images/abilities/ana/1.png - - - - - - Video2 - - - - :/newPrefix/D:/GitHub/OverwatchDataAnalysis/images/abilities/bastion/3.png - - - 280 - 18 - 115 + 20 + 161 29 + + + 20 + + - VIDEO + VIDEO NAME 282 - 62 + 120 113 20 @@ -113,7 +89,7 @@ 412 - 62 + 120 113 20 @@ -123,7 +99,7 @@ 412 - 92 + 150 113 20 @@ -133,7 +109,7 @@ 282 - 92 + 150 113 20 @@ -143,7 +119,7 @@ 412 - 122 + 180 113 20 @@ -153,7 +129,7 @@ 282 - 122 + 180 113 20 @@ -163,8 +139,8 @@ 284 - 162 - 71 + 368 + 231 16 @@ -176,8 +152,8 @@ 284 - 188 - 71 + 394 + 241 16 @@ -189,8 +165,8 @@ 284 - 214 - 71 + 420 + 241 16 @@ -198,42 +174,113 @@ CheckBox - + - 16 - 402 - 425 - 31 + 280 + 50 + 113 + 20 - - Save + + + + + 410 + 50 + 113 + 20 + - + - 448 - 402 - 75 - 29 + 280 + 272 + 113 + 20 - - Analyze + + + + + 280 + 212 + 113 + 20 + + + + + + + 410 + 272 + 113 + 20 + + + + + + + 280 + 242 + 113 + 20 + + + + + + + 410 + 242 + 113 + 20 + + + + + + + 410 + 212 + 113 + 20 + + + + + + + 280 + 310 + 113 + 20 + + + + + + + 410 + 310 + 113 + 20 + - - - Page - + 12 - 10 + 40 217 37 @@ -275,17 +322,14 @@ - - - Tab 2 - + - 6 - 6 + 0 + 40 253 - 437 + 411 @@ -327,11 +371,97 @@ + + + + 20 + 110 + 121 + 351 + + + + 0 + + + + Home + + + + 20 + + + + + + Setting + + + + 20 + + + + + + About + + + + 20 + + + + + + + + 20 + 40 + 111 + 51 + + + + + Adobe 黑体 Std R + 25 + + + + LOGO + + + + + + 140 + 520 + 431 + 31 + + + + Save + + + + + + 580 + 520 + 75 + 29 + + + + Analyze + + - - - + diff --git a/ora/gui/widget.py b/ora/gui/widget.py new file mode 100644 index 0000000..c4ffe0d --- /dev/null +++ b/ora/gui/widget.py @@ -0,0 +1,62 @@ +import sys + +from PyQt5 import QtGui, QtWidgets + + +class CustomeItem(QtWidgets.QWidget): + def __init__(self, parent=None, up_str='', down_str='', icon_path=''): + super(CustomeItem, self).__init__(parent) + self.textQVBoxLayout = QtWidgets.QVBoxLayout() + self.textUpQLabel = QtWidgets.QLabel() + self.textDownQLabel = QtWidgets.QLabel() + self.textQVBoxLayout.addWidget(self.textUpQLabel) + self.textQVBoxLayout.addWidget(self.textDownQLabel) + self.allQHBoxLayout = QtWidgets.QHBoxLayout() + self.iconQLabel = QtWidgets.QLabel() + self.allQHBoxLayout.addWidget(self.iconQLabel, 0) + self.allQHBoxLayout.addLayout(self.textQVBoxLayout, 1) + self.setLayout(self.allQHBoxLayout) + # setStyleSheet + self.textUpQLabel.setStyleSheet(''' + color: rgb(0, 0, 255); + ''') + self.textDownQLabel.setStyleSheet(''' + color: rgb(255, 0, 0); + ''') + + self.setTextUp(up_str) + self.setTextDown(down_str) + if icon_path: + self.setIcon(icon_path) + + def setTextUp (self, text): + self.textUpQLabel.setText(text) + + def setTextDown (self, text): + self.textDownQLabel.setText(text) + + def setIcon (self, img_path): + self.iconQLabel.setPixmap(QtGui.QPixmap(img_path)) + + +class _MyWindow(QtWidgets.QMainWindow): + def __init__(self): + super(_MyWindow, self).__init__() + self.listwidget = QtWidgets.QListWidget(self) + citem = CustomeItem(self, '123', '456', 'replay.png') + item = QtWidgets.QListWidgetItem(self) + item.setSizeHint(citem.sizeHint()) + self.listwidget.addItem(item) + self.listwidget.setItemWidget(item, citem) + self.setCentralWidget(self.listwidget) + + +if __name__ == '__main__': + app = QtWidgets.QApplication(sys.argv) + w = _MyWindow() + w.show() + sys.exit(app.exec_()) + + + + From eecab369aa19b955d007a8134f1f9537e8242316 Mon Sep 17 00:00:00 2001 From: chroming Date: Mon, 12 Mar 2018 23:21:02 +0800 Subject: [PATCH 04/57] update ui --- ora/gui/gui.py | 20 ++- ora/gui/main.ui | 398 ++++++++++++++++++++++++++++++-------------- ora/gui/preview.png | Bin 0 -> 63093 bytes ora/gui/replay.png | Bin 0 -> 10018 bytes ora/gui/widget.py | 76 +++++++-- 5 files changed, 346 insertions(+), 148 deletions(-) create mode 100644 ora/gui/preview.png create mode 100644 ora/gui/replay.png diff --git a/ora/gui/gui.py b/ora/gui/gui.py index b873f63..eae1b4a 100644 --- a/ora/gui/gui.py +++ b/ora/gui/gui.py @@ -9,19 +9,27 @@ class MainUi(QtWidgets.QMainWindow, windowui): def __init__(self): super(MainUi, self).__init__() self.setupUi(self) - self._add_custome_item(self.video_listwidget, '111', '222', 'replay.png') + self._add_custome_item(self.video_listwidget, VideoItem, '/path/1.mp4', 'WAITING', 'Shanghai Dragons', 'Dallas Fuel', 'replay.png') + self._add_custome_item(self.video_listwidget, VideoItem, '/path/1.mp4', 'RUNNING', 'Shanghai Dragons', 'Dallas Fuel', + 'replay.png') + + self._add_custome_item(self.tab_listwidget, TabItem, "ANALYSIS", 'replay.png') + self._add_custome_item(self.tab_listwidget, TabItem, "VIDEO PALY", 'replay.png') + self._add_custome_item(self.tab_listwidget, TabItem, "SETTINGS", 'replay.png') + + self._init_connect() def _init_connect(self): - self.label_listwidget.clicked.connect(lambda: self.main_stackedwidget.setCurrentIndex(self.label_listwidget.currentRow())) + self.tab_listwidget.clicked.connect(lambda: self.main_stackedwidget.setCurrentIndex(self.tab_listwidget.currentRow())) def _init_default(self): - self.label_listwidget.setCurrentRow(0) - self.main_stackedwidget.setCurrentIndex(0) + self.tab_listwidget.setCurrentRow(0) + self.main_stackedwidget.setCurrentIndex(2) @staticmethod - def _add_custome_item(listwidget, up_str, down_str, icon_path): - citem = CustomeItem(listwidget, up_str, down_str, icon_path) + def _add_custome_item(listwidget, item_class, *args): + citem = item_class(listwidget, *args) item = QtWidgets.QListWidgetItem(listwidget) item.setSizeHint(citem.sizeHint()) listwidget.addItem(item) diff --git a/ora/gui/main.ui b/ora/gui/main.ui index 52c24e1..4fd6065 100644 --- a/ora/gui/main.ui +++ b/ora/gui/main.ui @@ -6,8 +6,8 @@ 0 0 - 723 - 640 + 1098 + 770 @@ -17,12 +17,15 @@ - 140 + 124 10 - 569 - 461 + 967 + 721 + + + Qt::LeftToRight @@ -30,16 +33,16 @@ QFrame::NoFrame - 2 + 0 0 - 30 - 253 - 421 + 88 + 681 + 623 @@ -60,9 +63,9 @@ - 280 - 20 - 161 + 712 + 30 + 231 29 @@ -72,14 +75,14 @@ - VIDEO NAME + VIDEO SETTING - 282 - 120 + 712 + 334 113 20 @@ -88,8 +91,8 @@ - 412 - 120 + 842 + 334 113 20 @@ -98,8 +101,8 @@ - 412 - 150 + 842 + 364 113 20 @@ -108,8 +111,8 @@ - 282 - 150 + 712 + 364 113 20 @@ -118,8 +121,8 @@ - 412 - 180 + 842 + 394 113 20 @@ -128,152 +131,330 @@ - 282 - 180 + 712 + 394 113 20 - + - 284 - 368 - 231 - 16 + 712 + 100 + 113 + 20 - - CheckBox - - + - 284 - 394 - 241 - 16 + 840 + 100 + 113 + 20 - - CheckBox - - + - 284 - 420 - 241 - 16 + 712 + 486 + 113 + 20 - - CheckBox - - + - 280 - 50 + 712 + 426 113 20 - + - 410 - 50 + 842 + 486 113 20 - + - 280 - 272 + 712 + 456 113 20 - + - 280 - 212 + 842 + 456 113 20 - + - 410 - 272 + 842 + 426 113 20 - + - 280 - 242 + 712 + 518 113 20 - + - 410 - 242 + 842 + 518 113 20 - + - 410 - 212 - 113 - 20 + 714 + 80 + 54 + 12 + + + + + Start at + - + - 280 - 310 + 842 + 80 + 54 + 12 + + + + End at + + + + + + 714 + 136 + 93 + 16 + + + + Type of game + + + + + + 818 + 136 + 43 + 16 + + + + OWL + + + + + + 886 + 136 + 65 + 16 + + + + Custom + + + + + + 714 + 162 + 131 + 16 + + + + Publish your analysis + + + + + + 886 + 164 + 16 + 16 + + + + + + + false + + + + + + 710 + 202 + 231 + 29 + + + + + 20 + + + + TEAM SETTING + + + + + + 712 + 260 113 20 - + - 410 - 310 + 842 + 260 113 20 + + + + 712 + 238 + 73 + 16 + + + + + + + Team Left + + + + + + 846 + 236 + 67 + 16 + + + + + + + Team Right + + + + + + 714 + 308 + 89 + 16 + + + + + + + Players Left + + + + + + 842 + 306 + 89 + 16 + + + + + + + Players Right + + + + + + 0 + 28 + 57 + 57 + + + + + 50 + + + + < + + @@ -371,54 +552,24 @@ - + - 20 - 110 + 4 + 98 121 - 351 + 669 - 0 + -1 - - - Home - - - - 20 - - - - - - Setting - - - - 20 - - - - - - About - - - - 20 - - - - 20 - 40 + 4 + 10 111 51 @@ -436,9 +587,9 @@ - 140 - 520 - 431 + 134 + 732 + 587 31 @@ -449,8 +600,8 @@ - 580 - 520 + 730 + 732 75 29 @@ -460,7 +611,6 @@ - diff --git a/ora/gui/preview.png b/ora/gui/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..3dcd28f6c151bc8325795d1f6c9fd4d689b759ce GIT binary patch literal 63093 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 Bbf*9S literal 0 HcmV?d00001 diff --git a/ora/gui/replay.png b/ora/gui/replay.png new file mode 100644 index 0000000000000000000000000000000000000000..b16d2f31db905f1b6f2554473f150fd052cb55ba GIT binary patch literal 10018 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 OAT2drXt|1I*#7_zAbjrt literal 0 HcmV?d00001 diff --git a/ora/gui/widget.py b/ora/gui/widget.py index c4ffe0d..b6dd35d 100644 --- a/ora/gui/widget.py +++ b/ora/gui/widget.py @@ -3,48 +3,88 @@ from PyQt5 import QtGui, QtWidgets -class CustomeItem(QtWidgets.QWidget): - def __init__(self, parent=None, up_str='', down_str='', icon_path=''): - super(CustomeItem, self).__init__(parent) - self.textQVBoxLayout = QtWidgets.QVBoxLayout() - self.textUpQLabel = QtWidgets.QLabel() - self.textDownQLabel = QtWidgets.QLabel() - self.textQVBoxLayout.addWidget(self.textUpQLabel) - self.textQVBoxLayout.addWidget(self.textDownQLabel) +class VideoItem(QtWidgets.QWidget): + def __init__(self, parent=None, up_left_str='', up_right_str='', down_left_str='', down_right_str='', icon_path=''): + super(VideoItem, self).__init__(parent) + + self.textUpLayout = QtWidgets.QHBoxLayout() + self.textUpLeftLabel = QtWidgets.QLabel() + self.textUpRightLabel = QtWidgets.QLabel() + self.textUpLayout.addWidget(self.textUpLeftLabel) + self.textUpLayout.addWidget(self.textUpRightLabel) + + self.textDownLayout = QtWidgets.QHBoxLayout() + self.textDownLabelTeam1 = QtWidgets.QLabel() + self.textDownLeftLabel = QtWidgets.QLabel() + self.textDownLabelTeam2 = QtWidgets.QLabel() + self.textDownRightLabel = QtWidgets.QLabel() + self.textDownLayout.addWidget(self.textDownLabelTeam1) + self.textDownLayout.addWidget(self.textDownLeftLabel) + self.textDownLayout.addWidget(self.textDownLabelTeam2) + self.textDownLayout.addWidget(self.textDownRightLabel) + + self.allTextLayout = QtWidgets.QVBoxLayout() + self.allTextLayout.addLayout(self.textUpLayout) + self.allTextLayout.addLayout(self.textDownLayout) + self.allQHBoxLayout = QtWidgets.QHBoxLayout() self.iconQLabel = QtWidgets.QLabel() self.allQHBoxLayout.addWidget(self.iconQLabel, 0) - self.allQHBoxLayout.addLayout(self.textQVBoxLayout, 1) + self.allQHBoxLayout.addLayout(self.allTextLayout, 1) self.setLayout(self.allQHBoxLayout) - # setStyleSheet - self.textUpQLabel.setStyleSheet(''' + + self.textUpLeftLabel.setStyleSheet(''' color: rgb(0, 0, 255); ''') - self.textDownQLabel.setStyleSheet(''' + self.textUpRightLabel.setStyleSheet(''' color: rgb(255, 0, 0); ''') - self.setTextUp(up_str) - self.setTextDown(down_str) + self.setTextDown(down_left_str) + self.setLabelText(self.textUpLeftLabel, up_left_str) + self.setLabelText(self.textUpRightLabel, up_right_str) + self.setLabelText(self.textDownLabelTeam1, "TEAM 1") + self.setLabelText(self.textDownLeftLabel, down_left_str) + self.setLabelText(self.textDownLabelTeam2, "TEAM 2") + self.setLabelText(self.textDownRightLabel, down_right_str) + if icon_path: self.setIcon(icon_path) + @staticmethod + def setLabelText(label, text): + label.setText(text) + def setTextUp (self, text): - self.textUpQLabel.setText(text) + self.textUpLeftLabel.setText(text) def setTextDown (self, text): - self.textDownQLabel.setText(text) + self.textUpRightLabel.setText(text) def setIcon (self, img_path): self.iconQLabel.setPixmap(QtGui.QPixmap(img_path)) +class TabItem(QtWidgets.QWidget): + def __init__(self, parent=None, text='', img_path=''): + super(TabItem, self).__init__(parent) + self.textLabel = QtWidgets.QLabel() + self.iconLabel = QtWidgets.QLabel() + self.textLabel.setText(text) + self.iconLabel.setPixmap(QtGui.QPixmap(img_path)) + + self.layout = QtWidgets.QVBoxLayout() + self.layout.addWidget(self.iconLabel) + self.layout.addWidget(self.textLabel) + self.setLayout(self.layout) + + class _MyWindow(QtWidgets.QMainWindow): def __init__(self): super(_MyWindow, self).__init__() self.listwidget = QtWidgets.QListWidget(self) - citem = CustomeItem(self, '123', '456', 'replay.png') - item = QtWidgets.QListWidgetItem(self) + citem = VideoItem(self, '/path/1.mp4', 'WAITING', 'Shanghai Dragons', 'Dallas Fuel', 'replay.png') + item = QtWidgets.QListWidgetItem(self.listwidget) item.setSizeHint(citem.sizeHint()) self.listwidget.addItem(item) self.listwidget.setItemWidget(item, citem) From 4e4231147a552e9d071c024bfbe9be0f336ebb1f Mon Sep 17 00:00:00 2001 From: chroming Date: Wed, 14 Mar 2018 23:23:48 +0800 Subject: [PATCH 05/57] start write ui in code --- ora/gui/gui.py | 29 +++++++++++++++++++---------- ora/gui/widget.py | 41 ++++++++++++++++++++++++++++++++++++++++- 2 files changed, 59 insertions(+), 11 deletions(-) diff --git a/ora/gui/gui.py b/ora/gui/gui.py index eae1b4a..0048688 100644 --- a/ora/gui/gui.py +++ b/ora/gui/gui.py @@ -1,24 +1,33 @@ -from PyQt5 import uic + from widget import * -windowui, QtBaseClass = uic.loadUiType('main.ui') + +class MainUiBaseWidget(MainWindow): + def __init__(self): + super(MainUiBaseWidget, self).__init__() + layout = QtWidgets.QGridLayout() + self.videoListWidget = ListWidget(self) + self.videoListWidget.setGeometry(120, 67, 620, 640) + self.tabListWidget = QtWidgets.QListWidget(self) + self.tabListWidget.setGeometry(0, 0, 0, 0) + layout.addWidget(self.videoListWidget) + self.setLayout(layout) -class MainUi(QtWidgets.QMainWindow, windowui): +class MainUi(MainUiBaseWidget): def __init__(self): super(MainUi, self).__init__() - self.setupUi(self) - self._add_custome_item(self.video_listwidget, VideoItem, '/path/1.mp4', 'WAITING', 'Shanghai Dragons', 'Dallas Fuel', 'replay.png') - self._add_custome_item(self.video_listwidget, VideoItem, '/path/1.mp4', 'RUNNING', 'Shanghai Dragons', 'Dallas Fuel', + self._add_custome_item(self.videoListWidget, VideoItem, '/path/1.mp4', 'WAITING', 'Shanghai Dragons', 'Dallas Fuel', 'replay.png') + self._add_custome_item(self.videoListWidget, VideoItem, '/path/1.mp4', 'RUNNING', 'Shanghai Dragons', 'Dallas Fuel', 'replay.png') - self._add_custome_item(self.tab_listwidget, TabItem, "ANALYSIS", 'replay.png') - self._add_custome_item(self.tab_listwidget, TabItem, "VIDEO PALY", 'replay.png') - self._add_custome_item(self.tab_listwidget, TabItem, "SETTINGS", 'replay.png') + self._add_custome_item(self.tabListWidget, TabItem, "ANALYSIS", 'replay.png') + self._add_custome_item(self.tabListWidget, TabItem, "VIDEO PALY", 'replay.png') + self._add_custome_item(self.tabListWidget, TabItem, "SETTINGS", 'replay.png') - self._init_connect() + # self._init_connect() def _init_connect(self): self.tab_listwidget.clicked.connect(lambda: self.main_stackedwidget.setCurrentIndex(self.tab_listwidget.currentRow())) diff --git a/ora/gui/widget.py b/ora/gui/widget.py index b6dd35d..c5efc33 100644 --- a/ora/gui/widget.py +++ b/ora/gui/widget.py @@ -1,6 +1,13 @@ import sys from PyQt5 import QtGui, QtWidgets +from PyQt5.QtCore import Qt + + +class ListWidget(QtWidgets.QListWidget): + def __init__(self, parent=None): + super(ListWidget, self).__init__(parent) + self.setFrameShape(QtWidgets.QFrame.NoFrame) class VideoItem(QtWidgets.QWidget): @@ -79,6 +86,38 @@ def __init__(self, parent=None, text='', img_path=''): self.setLayout(self.layout) +class PicLabel(QtWidgets.QLabel): + def __init__(self, parent=None): + super(PicLabel, self).__init__(parent) + self.setStyleSheet("{background-color: rgb(14, 31, 51);}") + self.setGeometry(0, 0, 120, 67) + + +class TextLabel(QtWidgets.QLabel): + def __init__(self, parent=None): + super(TextLabel, self).__init__(parent) + self.setStyleSheet("{background-color: rgb(14, 31, 51);}") + self.setGeometry(0, 0, 120, 67) + self.setText("123") + + +class LineEdit(QtWidgets.QLineEdit): + pass + + +class ClickButton(QtWidgets.QPushButton): + def __init__(self): + super(ClickButton, self).__init__() + self.setFlat(True) + + +class MainWindow(QtWidgets.QMainWindow): + def __init__(self): + super(MainWindow, self).__init__() + self.setWindowFlags(Qt.FramelessWindowHint) + self.setGeometry(50, 50, 1200, 800) + + class _MyWindow(QtWidgets.QMainWindow): def __init__(self): super(_MyWindow, self).__init__() @@ -93,7 +132,7 @@ def __init__(self): if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) - w = _MyWindow() + w = MainWindow() w.show() sys.exit(app.exec_()) From 48f17c04369febb09d7f115483baf3beb08fed37 Mon Sep 17 00:00:00 2001 From: chroming Date: Sun, 18 Mar 2018 21:14:02 +0800 Subject: [PATCH 06/57] update demo ui --- ora/gui/gui.py | 111 +++++++++++++++++++++++++++++++++++----------- ora/gui/widget.py | 53 ++++++++++++++++++++-- 2 files changed, 133 insertions(+), 31 deletions(-) diff --git a/ora/gui/gui.py b/ora/gui/gui.py index 0048688..bb7320c 100644 --- a/ora/gui/gui.py +++ b/ora/gui/gui.py @@ -3,46 +3,103 @@ from widget import * -class MainUiBaseWidget(MainWindow): +class UiFunc(object): + @staticmethod + def _add_list_item(listwidget, item_class, *args): + citem = item_class(listwidget, *args) + item = QtWidgets.QListWidgetItem(listwidget) + item.setSizeHint(citem.sizeHint()) + listwidget.addItem(item) + listwidget.setItemWidget(item, citem) + + @staticmethod + def _add_widget_item(parent, layout, widget_class, geometry, *args, **kwargs): + widget = widget_class(parent, *args, **kwargs) + widget.setGeometry(*geometry) + if not layout: + layout = parent.layout + layout.addWidget(widget) + return widget + + +class MainUiBaseWidget(MainWindow, UiFunc, WindowDragMixin, ControlButtonMixin): def __init__(self): super(MainUiBaseWidget, self).__init__() - layout = QtWidgets.QGridLayout() - self.videoListWidget = ListWidget(self) - self.videoListWidget.setGeometry(120, 67, 620, 640) - self.tabListWidget = QtWidgets.QListWidget(self) - self.tabListWidget.setGeometry(0, 0, 0, 0) - layout.addWidget(self.videoListWidget) - self.setLayout(layout) + # MainWindow.__init__(self) + # UiFunc.__init__(self) + self._init_widget() + self._init_connect() + + def _init_widget(self): + self.layout = QtWidgets.QGridLayout() + self.setLayout(self.layout) + self._init_base_widget() + + def _init_connect(self): + self.tab_listwidget.clicked.connect(lambda: self.stacked_widget.setCurrentIndex(self.tab_listwidget.currentRow())) + self.set_button(self.min_button, self.max_button, self.close_button, '[]', '{}') + # ControlButtonMixin.__init__(self.min_button, self.max_button, self.exit_button) + + def _init_base_widget(self): + self.tab_layout = QtWidgets.QVBoxLayout() + # self.tab_layout.setGeometry((0, 0, 120, 620)) + self._add_widget_item(self, self.tab_layout, PicLabel, geometry=(0, 0, 120, 67)) + self.tab_listwidget = self._add_widget_item(self, self.tab_layout, ListWidget, geometry=(0, 67, 120, 620)) + self._add_list_item(self.tab_listwidget, TabItem, "ANALYSIS", 'replay.png') + self._add_list_item(self.tab_listwidget, TabItem, "VIDEO PALY", 'replay.png') + self._add_list_item(self.tab_listwidget, TabItem, "SETTINGS", 'replay.png') + + self.top_layout = QtWidgets.QHBoxLayout() + self.back_button = self._add_widget_item(self, self.top_layout, ClickButton, geometry=(140, 0, 47, 67), text='<') + self.help_button = self._add_widget_item(self, self.top_layout, ClickButton, geometry=(1000, 0, 47, 67), text='?') + self.min_button = self._add_widget_item(self, self.top_layout, ClickButton, geometry=(1050, 0, 47, 67), text='-') + self.max_button = self._add_widget_item(self, self.top_layout, ClickButton, geometry=(1100, 0, 47, 67), text='[]') + self.close_button = self._add_widget_item(self, self.top_layout, ClickButton, geometry=(1150, 0, 47, 67), text='X') + + self.stacked_widget = self._add_widget_item(self, None, StackedWidget, geometry=(120, 67, 1080, 733)) + self._init_analysis_tab() + self._init_play_tab() + self._init_setting_tab() + + self.stacked_widget.addWidget(self.analysis_widget) + self.stacked_widget.addWidget(self.play_widget) + self.stacked_widget.addWidget(self.setting_widget) + #self.stacked_widget.setCurrentIndex(1) + + def _init_analysis_tab(self): + self.analysis_widget = QtWidgets.QWidget(self.stacked_widget) + self.analysis_layout = QtWidgets.QGridLayout() + self.analysis_layout.addWidget(self.analysis_widget) + self.video_listwidget = self._add_widget_item(self.analysis_widget, self.analysis_layout, ListWidget, geometry=(0, 0, 620, 640)) + + self._add_list_item(self.video_listwidget, VideoItem, '/path/1.mp4', 'WAITING', 'Shanghai Dragons', 'Dallas Fuel', 'replay.png') + self._add_list_item(self.video_listwidget, VideoItem, '/path/1.mp4', 'RUNNING', 'Shanghai Dragons', 'Dallas Fuel', 'replay.png') + + def _init_play_tab(self): + self.play_widget = QtWidgets.QWidget(self.stacked_widget) + self.play_layout = QtWidgets.QGridLayout() + self.play_layout.addWidget(self.play_widget) + self._add_widget_item(self.play_widget, self.play_layout, TextLabel, geometry=(0, 0, 100, 100), text='PALY') + + def _init_setting_tab(self): + self.setting_widget = QtWidgets.QWidget(self.stacked_widget) + self.setting_layout = QtWidgets.QGridLayout() + self.setting_layout.addWidget(self.setting_widget) + self._add_widget_item(self.setting_widget, self.setting_layout, TextLabel, geometry=(0, 0, 100, 100), text='SETTTING') class MainUi(MainUiBaseWidget): def __init__(self): super(MainUi, self).__init__() - self._add_custome_item(self.videoListWidget, VideoItem, '/path/1.mp4', 'WAITING', 'Shanghai Dragons', 'Dallas Fuel', 'replay.png') - self._add_custome_item(self.videoListWidget, VideoItem, '/path/1.mp4', 'RUNNING', 'Shanghai Dragons', 'Dallas Fuel', - 'replay.png') - self._add_custome_item(self.tabListWidget, TabItem, "ANALYSIS", 'replay.png') - self._add_custome_item(self.tabListWidget, TabItem, "VIDEO PALY", 'replay.png') - self._add_custome_item(self.tabListWidget, TabItem, "SETTINGS", 'replay.png') + def _init_default(self): + self.tab_listwidget.setCurrentRow(0) + self.stacked_widget.setCurrentIndex(2) - # self._init_connect() - def _init_connect(self): - self.tab_listwidget.clicked.connect(lambda: self.main_stackedwidget.setCurrentIndex(self.tab_listwidget.currentRow())) - def _init_default(self): - self.tab_listwidget.setCurrentRow(0) - self.main_stackedwidget.setCurrentIndex(2) - @staticmethod - def _add_custome_item(listwidget, item_class, *args): - citem = item_class(listwidget, *args) - item = QtWidgets.QListWidgetItem(listwidget) - item.setSizeHint(citem.sizeHint()) - listwidget.addItem(item) - listwidget.setItemWidget(item, citem) if __name__ == '__main__': diff --git a/ora/gui/widget.py b/ora/gui/widget.py index c5efc33..269a39c 100644 --- a/ora/gui/widget.py +++ b/ora/gui/widget.py @@ -10,6 +10,11 @@ def __init__(self, parent=None): self.setFrameShape(QtWidgets.QFrame.NoFrame) +class StackedWidget(QtWidgets.QStackedWidget): + def __init__(self, parent=None): + super(StackedWidget, self).__init__(parent) + + class VideoItem(QtWidgets.QWidget): def __init__(self, parent=None, up_left_str='', up_right_str='', down_left_str='', down_right_str='', icon_path=''): super(VideoItem, self).__init__(parent) @@ -94,11 +99,11 @@ def __init__(self, parent=None): class TextLabel(QtWidgets.QLabel): - def __init__(self, parent=None): + def __init__(self, parent=None, text=''): super(TextLabel, self).__init__(parent) self.setStyleSheet("{background-color: rgb(14, 31, 51);}") self.setGeometry(0, 0, 120, 67) - self.setText("123") + self.setText(text) class LineEdit(QtWidgets.QLineEdit): @@ -106,9 +111,10 @@ class LineEdit(QtWidgets.QLineEdit): class ClickButton(QtWidgets.QPushButton): - def __init__(self): - super(ClickButton, self).__init__() + def __init__(self, parent=None, text=''): + super(ClickButton, self).__init__(parent) self.setFlat(True) + self.setText(text) class MainWindow(QtWidgets.QMainWindow): @@ -130,6 +136,45 @@ def __init__(self): self.setCentralWidget(self.listwidget) +class WindowDragMixin(object): + def mousePressEvent(self, event): + if event.button() == Qt.LeftButton: + self.m_drag = True + self.m_DragPosition = event.globalPos() - self.pos() + event.accept() + + def mouseMoveEvent(self, QMouseEvent): + if QMouseEvent.buttons() and Qt.LeftButton: + self.move(QMouseEvent.globalPos() - self.m_DragPosition) + QMouseEvent.accept() + + def mouseReleaseEvent(self, QMouseEvent): + self.m_drag = False + + +class ControlButtonMixin(QtWidgets.QWidget): + def __init__(self, ): + super(ControlButtonMixin, self).__init__() + + def set_button(self, min_button, max_button, exit_button, max_icon='', resize_icon=''): + self.max_button = max_button + self.max_icon = max_icon + self.resize_icon = resize_icon + + min_button.clicked.connect(self.showMinimized) + max_button.clicked.connect(self._max_button_clicked) + exit_button.clicked.connect(self.close) + + def _max_button_clicked(self): + if self.isMaximized(): + self.showNormal() + self.max_button.setText(self.resize_icon) + else: + self.showMaximized() + self.max_button.setText(self.resize_icon) + + + if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) w = MainWindow() From 4035a55c38f697086921e94c7393f2919ecb676c Mon Sep 17 00:00:00 2001 From: chroming Date: Tue, 27 Mar 2018 23:37:05 +0800 Subject: [PATCH 07/57] update demo ui --- ora/gui/gui.py | 62 ++++++++++++-- ora/gui/gui_.py | 83 ++++++++++++++++++ ora/gui/main.ui | 209 ++++++++++++++++++++++++++++++++-------------- ora/gui/widget.py | 28 +++++-- 4 files changed, 309 insertions(+), 73 deletions(-) create mode 100644 ora/gui/gui_.py diff --git a/ora/gui/gui.py b/ora/gui/gui.py index bb7320c..c311e53 100644 --- a/ora/gui/gui.py +++ b/ora/gui/gui.py @@ -1,8 +1,14 @@ +from os.path import join + +from PyQt5.Qt import QIcon from widget import * +SRC_PATH = 'D:/GitHub/OverwatchDataAnalysis/ui_design/images' + + class UiFunc(object): @staticmethod def _add_list_item(listwidget, item_class, *args): @@ -21,8 +27,43 @@ def _add_widget_item(parent, layout, widget_class, geometry, *args, **kwargs): layout.addWidget(widget) return widget + @staticmethod + def _get_icon(file_name): + return QIcon(join(SRC_PATH, 'icons', file_name)) -class MainUiBaseWidget(MainWindow, UiFunc, WindowDragMixin, ControlButtonMixin): + @staticmethod + def _set_background_img(widget, file_name): + widget.setStyleSheet("background-image: url(%s)" % (SRC_PATH + '/bgs/' + file_name)) + + +class UiWidget(UiFunc): + def line_edit_with_label(self, text=''): + label = TextLabel(self) + line_edit = LineEdit(self) + self._set_background_img(line_edit, '') + layout = QtWidgets.QVBoxLayout(self) + layout.addWidget(label) + layout.addWidget(line_edit) + self.layout.addChildLayout(layout) + + def label_with_radio_buttons(self): + label = TextLabel() + button0 = RadioButton() + button1 = RadioButton() + button_group = QtWidgets.QButtonGroup() + button_group.addButton(button0) + button_group.addButton(button1) + layout = QtWidgets.QHBoxLayout(self) + layout.addWidget(label) + layout.addWidget(button0) + layout.addWidget(button1) + + def label_with_check_button(self): + label = TextLabel() + button = CheckButton() + + +class MainUiBaseWidget(MainWindow, UiWidget, WindowDragMixin, ControlButtonMixin): def __init__(self): super(MainUiBaseWidget, self).__init__() # MainWindow.__init__(self) @@ -37,7 +78,7 @@ def _init_widget(self): def _init_connect(self): self.tab_listwidget.clicked.connect(lambda: self.stacked_widget.setCurrentIndex(self.tab_listwidget.currentRow())) - self.set_button(self.min_button, self.max_button, self.close_button, '[]', '{}') + self.set_control_button(self.min_button, self.max_button, self.close_button, '[]', '{}') # ControlButtonMixin.__init__(self.min_button, self.max_button, self.exit_button) def _init_base_widget(self): @@ -45,16 +86,20 @@ def _init_base_widget(self): # self.tab_layout.setGeometry((0, 0, 120, 620)) self._add_widget_item(self, self.tab_layout, PicLabel, geometry=(0, 0, 120, 67)) self.tab_listwidget = self._add_widget_item(self, self.tab_layout, ListWidget, geometry=(0, 67, 120, 620)) + self._set_background_img(self.tab_listwidget, 'left_bg.png') self._add_list_item(self.tab_listwidget, TabItem, "ANALYSIS", 'replay.png') self._add_list_item(self.tab_listwidget, TabItem, "VIDEO PALY", 'replay.png') self._add_list_item(self.tab_listwidget, TabItem, "SETTINGS", 'replay.png') self.top_layout = QtWidgets.QHBoxLayout() - self.back_button = self._add_widget_item(self, self.top_layout, ClickButton, geometry=(140, 0, 47, 67), text='<') - self.help_button = self._add_widget_item(self, self.top_layout, ClickButton, geometry=(1000, 0, 47, 67), text='?') - self.min_button = self._add_widget_item(self, self.top_layout, ClickButton, geometry=(1050, 0, 47, 67), text='-') - self.max_button = self._add_widget_item(self, self.top_layout, ClickButton, geometry=(1100, 0, 47, 67), text='[]') - self.close_button = self._add_widget_item(self, self.top_layout, ClickButton, geometry=(1150, 0, 47, 67), text='X') + self.top_group = QtWidgets.QGroupBox(self) + self.top_group.setLayout(self.top_layout) + self._set_background_img(self.top_group, 'top_bg.png') + self.back_button = self._add_widget_item(self.top_group, self.top_layout, ClickButton, geometry=(140, 0, 47, 67), icon_path=self._get_icon('design_03')) + self.help_button = self._add_widget_item(self, self.top_layout, ClickButton, geometry=(1000, 0, 47, 67), icon_path=self._get_icon('design_05')) + self.min_button = self._add_widget_item(self, self.top_layout, ClickButton, geometry=(1050, 0, 47, 67), icon_path=self._get_icon('design_07')) + self.max_button = self._add_widget_item(self, self.top_layout, ClickButton, geometry=(1100, 0, 47, 67), icon_path=self._get_icon('design_08')) + self.close_button = self._add_widget_item(self, self.top_layout, ClickButton, geometry=(1150, 0, 47, 67), icon_path=self._get_icon('design_09')) self.stacked_widget = self._add_widget_item(self, None, StackedWidget, geometry=(120, 67, 1080, 733)) self._init_analysis_tab() @@ -71,10 +116,13 @@ def _init_analysis_tab(self): self.analysis_layout = QtWidgets.QGridLayout() self.analysis_layout.addWidget(self.analysis_widget) self.video_listwidget = self._add_widget_item(self.analysis_widget, self.analysis_layout, ListWidget, geometry=(0, 0, 620, 640)) + # self._set_background_img(self.video_listwidget, ) self._add_list_item(self.video_listwidget, VideoItem, '/path/1.mp4', 'WAITING', 'Shanghai Dragons', 'Dallas Fuel', 'replay.png') self._add_list_item(self.video_listwidget, VideoItem, '/path/1.mp4', 'RUNNING', 'Shanghai Dragons', 'Dallas Fuel', 'replay.png') + self.line_edit_with_label() + def _init_play_tab(self): self.play_widget = QtWidgets.QWidget(self.stacked_widget) self.play_layout = QtWidgets.QGridLayout() diff --git a/ora/gui/gui_.py b/ora/gui/gui_.py new file mode 100644 index 0000000..0e44e16 --- /dev/null +++ b/ora/gui/gui_.py @@ -0,0 +1,83 @@ +from os.path import join + +from PyQt5 import uic +from PyQt5.Qt import QIcon + +from widget import * + +windowui, QtBaseClass = uic.loadUiType('main.ui') + +SRC_PATH = 'D:/GitHub/OverwatchDataAnalysis/ui_design/images' + + +class UiFunc(object): + @staticmethod + def _add_list_item(listwidget, item_class, *args): + citem = item_class(listwidget, *args) + item = QtWidgets.QListWidgetItem(listwidget) + item.setSizeHint(citem.sizeHint()) + listwidget.addItem(item) + listwidget.setItemWidget(item, citem) + + @staticmethod + def _add_widget_item(parent, layout, widget_class, geometry, *args, **kwargs): + widget = widget_class(parent, *args, **kwargs) + widget.setGeometry(*geometry) + if not layout: + layout = parent.layout + layout.addWidget(widget) + return widget + + @staticmethod + def _get_icon(file_name): + return QIcon(join(SRC_PATH, 'icons', file_name)) + + @staticmethod + def _set_background_img(widget, file_name): + widget.setStyleSheet("background-image: url(%s)" % (SRC_PATH + '/bgs/' + file_name)) + + +class BeautiUi(windowui, UiFunc, WindowDragMixin, ControlButtonMixin): + def __init__(self): + super(BeautiUi, self).__init__() + self.setupUi(self) + + self.setWindowFlags(Qt.FramelessWindowHint) + self.set_control_button(self.min_button, self.max_button, self.close_button) + + +class MainUi(QtWidgets.QMainWindow, BeautiUi): + def __init__(self): + super(MainUi, self).__init__() + self._add_custome_item(self.video_listwidget, VideoItem, '/path/1.mp4', 'WAITING', 'Shanghai Dragons', 'Dallas Fuel', 'replay.png') + self._add_custome_item(self.video_listwidget, VideoItem, '/path/1.mp4', 'RUNNING', 'Shanghai Dragons', 'Dallas Fuel', + 'replay.png') + + self._add_custome_item(self.tab_listwidget, TabItem, "ANALYSIS", 'replay.png') + self._add_custome_item(self.tab_listwidget, TabItem, "VIDEO PALY", 'replay.png') + self._add_custome_item(self.tab_listwidget, TabItem, "SETTINGS", 'replay.png') + + + self._init_connect() + + def _init_connect(self): + self.tab_listwidget.clicked.connect(lambda: self.main_stackedwidget.setCurrentIndex(self.tab_listwidget.currentRow())) + + def _init_default(self): + self.tab_listwidget.setCurrentRow(0) + self.main_stackedwidget.setCurrentIndex(2) + + @staticmethod + def _add_custome_item(listwidget, item_class, *args): + citem = item_class(listwidget, *args) + item = QtWidgets.QListWidgetItem(listwidget) + item.setSizeHint(citem.sizeHint()) + listwidget.addItem(item) + listwidget.setItemWidget(item, citem) + + +if __name__ == '__main__': + app = QtWidgets.QApplication(sys.argv) + w = MainUi() + w.show() + sys.exit(app.exec_()) \ No newline at end of file diff --git a/ora/gui/main.ui b/ora/gui/main.ui index 4fd6065..c686f67 100644 --- a/ora/gui/main.ui +++ b/ora/gui/main.ui @@ -18,9 +18,9 @@ 124 - 10 + 100 967 - 721 + 631 @@ -35,14 +35,14 @@ 0 - + 0 - 88 + 0 681 - 623 + 711 @@ -64,7 +64,7 @@ 712 - 30 + 86 231 29 @@ -82,7 +82,7 @@ 712 - 334 + 390 113 20 @@ -92,7 +92,7 @@ 842 - 334 + 390 113 20 @@ -102,7 +102,7 @@ 842 - 364 + 420 113 20 @@ -112,7 +112,7 @@ 712 - 364 + 420 113 20 @@ -122,7 +122,7 @@ 842 - 394 + 450 113 20 @@ -132,7 +132,7 @@ 712 - 394 + 450 113 20 @@ -142,7 +142,7 @@ 712 - 100 + 156 113 20 @@ -152,7 +152,7 @@ 840 - 100 + 156 113 20 @@ -162,7 +162,7 @@ 712 - 486 + 542 113 20 @@ -172,7 +172,7 @@ 712 - 426 + 482 113 20 @@ -182,7 +182,7 @@ 842 - 486 + 542 113 20 @@ -192,7 +192,7 @@ 712 - 456 + 512 113 20 @@ -202,7 +202,7 @@ 842 - 456 + 512 113 20 @@ -212,7 +212,7 @@ 842 - 426 + 482 113 20 @@ -222,7 +222,7 @@ 712 - 518 + 574 113 20 @@ -232,7 +232,7 @@ 842 - 518 + 574 113 20 @@ -242,7 +242,7 @@ 714 - 80 + 136 54 12 @@ -258,7 +258,7 @@ 842 - 80 + 136 54 12 @@ -271,7 +271,7 @@ 714 - 136 + 192 93 16 @@ -284,7 +284,7 @@ 818 - 136 + 192 43 16 @@ -297,7 +297,7 @@ 886 - 136 + 192 65 16 @@ -310,7 +310,7 @@ 714 - 162 + 218 131 16 @@ -323,7 +323,7 @@ 886 - 164 + 220 16 16 @@ -339,7 +339,7 @@ 710 - 202 + 258 231 29 @@ -357,7 +357,7 @@ 712 - 260 + 316 113 20 @@ -367,7 +367,7 @@ 842 - 260 + 316 113 20 @@ -377,7 +377,7 @@ 712 - 238 + 294 73 16 @@ -393,7 +393,7 @@ 846 - 236 + 292 67 16 @@ -409,7 +409,7 @@ 714 - 308 + 364 89 16 @@ -425,7 +425,7 @@ 842 - 306 + 362 89 16 @@ -437,26 +437,8 @@ Players Right - - - - 0 - 28 - 57 - 57 - - - - - 50 - - - - < - - - + @@ -503,7 +485,7 @@ - + @@ -568,7 +550,7 @@ - 4 + 8 10 111 51 @@ -587,8 +569,8 @@ - 134 - 732 + 128 + 736 587 31 @@ -600,8 +582,8 @@ - 730 - 732 + 726 + 736 75 29 @@ -610,6 +592,111 @@ Analyze + + + + 126 + 4 + 65 + 65 + + + + + 20 + + + + < + + + true + + + + + + 814 + 2 + 65 + 65 + + + + + 20 + + + + ? + + + true + + + + + + 884 + 0 + 65 + 65 + + + + + 20 + + + + - + + + true + + + + + + 960 + 0 + 65 + 65 + + + + + 20 + + + + [] + + + true + + + + + + 1034 + 0 + 65 + 65 + + + + + 20 + + + + X + + + true + + diff --git a/ora/gui/widget.py b/ora/gui/widget.py index 269a39c..eacba18 100644 --- a/ora/gui/widget.py +++ b/ora/gui/widget.py @@ -2,6 +2,7 @@ from PyQt5 import QtGui, QtWidgets from PyQt5.QtCore import Qt +from PyQt5.Qt import QSize class ListWidget(QtWidgets.QListWidget): @@ -67,13 +68,13 @@ def __init__(self, parent=None, up_left_str='', up_right_str='', down_left_str=' def setLabelText(label, text): label.setText(text) - def setTextUp (self, text): + def setTextUp(self, text): self.textUpLeftLabel.setText(text) - def setTextDown (self, text): + def setTextDown(self, text): self.textUpRightLabel.setText(text) - def setIcon (self, img_path): + def setIcon(self, img_path): self.iconQLabel.setPixmap(QtGui.QPixmap(img_path)) @@ -111,10 +112,27 @@ class LineEdit(QtWidgets.QLineEdit): class ClickButton(QtWidgets.QPushButton): - def __init__(self, parent=None, text=''): + def __init__(self, parent=None, text='', icon_path=None): super(ClickButton, self).__init__(parent) self.setFlat(True) self.setText(text) + if icon_path: + self.setIcon(icon_path) + self.setIconSize(QSize(100, 100)) + + +class RadioButton(QtWidgets.QRadioButton): + def __init__(self): + super(RadioButton, self).__init__() + + +class CheckButton(QtWidgets.QCheckBox): + def __init__(self): + super(CheckButton, self).__init__() + + +def click_button(): + button = ClickButton() class MainWindow(QtWidgets.QMainWindow): @@ -156,7 +174,7 @@ class ControlButtonMixin(QtWidgets.QWidget): def __init__(self, ): super(ControlButtonMixin, self).__init__() - def set_button(self, min_button, max_button, exit_button, max_icon='', resize_icon=''): + def set_control_button(self, min_button, max_button, exit_button, max_icon='', resize_icon=''): self.max_button = max_button self.max_icon = max_icon self.resize_icon = resize_icon From 0a989769fa70eff6073bed8943a870f0e912474a Mon Sep 17 00:00:00 2001 From: chroming Date: Sun, 1 Apr 2018 00:27:43 +0800 Subject: [PATCH 08/57] add ui group --- ora/gui/gui_.py | 14 +++- ora/gui/main.ui | 187 +++++++++++++++++++++++++++++++++++------------- 2 files changed, 151 insertions(+), 50 deletions(-) diff --git a/ora/gui/gui_.py b/ora/gui/gui_.py index 0e44e16..1b26642 100644 --- a/ora/gui/gui_.py +++ b/ora/gui/gui_.py @@ -1,13 +1,13 @@ from os.path import join -from PyQt5 import uic +from PyQt5 import uic, QtWidgets from PyQt5.Qt import QIcon from widget import * windowui, QtBaseClass = uic.loadUiType('main.ui') -SRC_PATH = 'D:/GitHub/OverwatchDataAnalysis/ui_design/images' +SRC_PATH = './images' class UiFunc(object): @@ -36,6 +36,11 @@ def _get_icon(file_name): def _set_background_img(widget, file_name): widget.setStyleSheet("background-image: url(%s)" % (SRC_PATH + '/bgs/' + file_name)) + @staticmethod + def dynamic_base_class(instance, cls, cls_name): + instance.__class__ = type(cls_name, (cls, instance.__class__), {}) + return instance + class BeautiUi(windowui, UiFunc, WindowDragMixin, ControlButtonMixin): def __init__(self): @@ -45,6 +50,11 @@ def __init__(self): self.setWindowFlags(Qt.FramelessWindowHint) self.set_control_button(self.min_button, self.max_button, self.close_button) + self.tab_listwidget.setFrameShape(QtWidgets.QFrame.NoFrame) + self.video_listwidget.setFrameShape(QtWidgets.QFrame.NoFrame) + + self._set_background_img(self.left_group, 'left_bg.png') + class MainUi(QtWidgets.QMainWindow, BeautiUi): def __init__(self): diff --git a/ora/gui/main.ui b/ora/gui/main.ui index c686f67..8d06ca3 100644 --- a/ora/gui/main.ui +++ b/ora/gui/main.ui @@ -60,29 +60,11 @@ true - - - - 712 - 86 - 231 - 29 - - - - - 20 - - - - VIDEO SETTING - - 712 - 390 + 296 113 20 @@ -92,7 +74,7 @@ 842 - 390 + 296 113 20 @@ -102,7 +84,7 @@ 842 - 420 + 326 113 20 @@ -112,7 +94,7 @@ 712 - 420 + 326 113 20 @@ -122,7 +104,7 @@ 842 - 450 + 356 113 20 @@ -132,7 +114,7 @@ 712 - 450 + 356 113 20 @@ -142,7 +124,7 @@ 712 - 156 + 62 113 20 @@ -152,7 +134,7 @@ 840 - 156 + 62 113 20 @@ -162,7 +144,7 @@ 712 - 542 + 448 113 20 @@ -172,7 +154,7 @@ 712 - 482 + 388 113 20 @@ -182,7 +164,7 @@ 842 - 542 + 448 113 20 @@ -192,7 +174,7 @@ 712 - 512 + 418 113 20 @@ -202,7 +184,7 @@ 842 - 512 + 418 113 20 @@ -212,7 +194,7 @@ 842 - 482 + 388 113 20 @@ -222,7 +204,7 @@ 712 - 574 + 480 113 20 @@ -232,7 +214,7 @@ 842 - 574 + 480 113 20 @@ -242,7 +224,7 @@ 714 - 136 + 42 54 12 @@ -258,7 +240,7 @@ 842 - 136 + 42 54 12 @@ -271,7 +253,7 @@ 714 - 192 + 98 93 16 @@ -284,7 +266,7 @@ 818 - 192 + 98 43 16 @@ -297,7 +279,7 @@ 886 - 192 + 98 65 16 @@ -310,7 +292,7 @@ 714 - 218 + 124 131 16 @@ -323,7 +305,7 @@ 886 - 220 + 126 16 16 @@ -339,7 +321,7 @@ 710 - 258 + 164 231 29 @@ -357,7 +339,7 @@ 712 - 316 + 222 113 20 @@ -367,7 +349,7 @@ 842 - 316 + 222 113 20 @@ -377,7 +359,7 @@ 712 - 294 + 200 73 16 @@ -393,7 +375,7 @@ 846 - 292 + 198 67 16 @@ -409,7 +391,7 @@ 714 - 364 + 270 89 16 @@ -425,7 +407,7 @@ 842 - 362 + 268 89 16 @@ -437,6 +419,76 @@ Players Right + + + + 710 + 0 + 231 + 29 + + + + + 20 + + + + VIDEO SETTING + + + + + + 700 + 0 + 261 + 31 + + + + + + + + + + 700 + 30 + 261 + 131 + + + + + + + + + + 700 + 160 + 261 + 41 + + + + + + + + + + 700 + 200 + 261 + 311 + + + + + + @@ -697,6 +749,45 @@ true + + + + 120 + 0 + 971 + 80 + + + + + + + + + + 0 + -1 + 120 + 771 + + + + + + + + + + 120 + 729 + 681 + 81 + + + + + + From c8f0f16160bfdd8fc7fab2022085238d5e822555 Mon Sep 17 00:00:00 2001 From: chroming Date: Sun, 1 Apr 2018 01:47:24 +0800 Subject: [PATCH 09/57] add group bgs --- ora/gui/gui_.py | 16 +- ora/gui/main.ui | 473 ++++++++++++++++++++++++++-------------------- ora/gui/widget.py | 18 ++ 3 files changed, 294 insertions(+), 213 deletions(-) diff --git a/ora/gui/gui_.py b/ora/gui/gui_.py index 1b26642..f7e91da 100644 --- a/ora/gui/gui_.py +++ b/ora/gui/gui_.py @@ -54,6 +54,14 @@ def __init__(self): self.video_listwidget.setFrameShape(QtWidgets.QFrame.NoFrame) self._set_background_img(self.left_group, 'left_bg.png') + self._set_background_img(self.top_group, 'top_bg.png') + self._set_background_img(self.analyze_group, 'analyze_bg.png') + self._set_background_img(self.video_title_group, 'column_title_bg.png') + self._set_background_img(self.team_title_group, 'column_title_bg.png') + self._set_background_img(self.video_setting_group, 'right_bg.png') + self._set_background_img(self.team_setting_group, 'right_bg.png') + self._set_background_img(self.left_shadow_label, 'left_bg_shadow.png') + class MainUi(QtWidgets.QMainWindow, BeautiUi): @@ -63,9 +71,11 @@ def __init__(self): self._add_custome_item(self.video_listwidget, VideoItem, '/path/1.mp4', 'RUNNING', 'Shanghai Dragons', 'Dallas Fuel', 'replay.png') - self._add_custome_item(self.tab_listwidget, TabItem, "ANALYSIS", 'replay.png') - self._add_custome_item(self.tab_listwidget, TabItem, "VIDEO PALY", 'replay.png') - self._add_custome_item(self.tab_listwidget, TabItem, "SETTINGS", 'replay.png') + self._add_custome_item(self.tab_listwidget, PicTabItem, SRC_PATH+'/tab_icons/1_normal.png', SRC_PATH + '/tab_icons/1_selected.png') + + #self._add_custome_item(self.tab_listwidget, TabItem, "ANALYSIS", 'replay.png') + #self._add_custome_item(self.tab_listwidget, TabItem, "VIDEO PALY", 'replay.png') + #self._add_custome_item(self.tab_listwidget, TabItem, "SETTINGS", 'replay.png') self._init_connect() diff --git a/ora/gui/main.ui b/ora/gui/main.ui index 8d06ca3..4b3190c 100644 --- a/ora/gui/main.ui +++ b/ora/gui/main.ui @@ -18,9 +18,9 @@ 124 - 100 + 90 967 - 631 + 641 @@ -39,10 +39,10 @@ - 0 + 4 0 - 681 - 711 + 695 + 645 @@ -220,29 +220,13 @@ - - - - 714 - 42 - 54 - 12 - - - - - - - Start at - - 842 - 42 + 40 54 - 12 + 16 @@ -317,24 +301,6 @@ false - - - - 710 - 164 - 231 - 29 - - - - - 20 - - - - TEAM SETTING - - @@ -419,25 +385,7 @@ Players Right - - - - 710 - 0 - 231 - 29 - - - - - 20 - - - - VIDEO SETTING - - - + 700 @@ -449,8 +397,26 @@ - - + + + + 2 + 0 + 247 + 29 + + + + + 20 + + + + VIDEO SETTING + + + + 700 @@ -462,8 +428,24 @@ - - + + + + 14 + 12 + 54 + 12 + + + + + + + Start at + + + + 700 @@ -475,8 +457,26 @@ - - + + + + 4 + 4 + 247 + 29 + + + + + 20 + + + + TEAM SETTING + + + + 700 @@ -489,6 +489,39 @@ + team_setting_group + team_title_group + video_setting_group + video_title_group + video_listwidget + lineEdit + lineEdit_2 + lineEdit_3 + lineEdit_4 + lineEdit_5 + lineEdit_6 + lineEdit_8 + lineEdit_9 + lineEdit_10 + lineEdit_11 + lineEdit_12 + lineEdit_13 + lineEdit_14 + lineEdit_15 + lineEdit_16 + lineEdit_17 + label_6 + label_7 + radioButton + radioButton_2 + label_8 + checkBox_5 + lineEdit_18 + lineEdit_19 + label_10 + label_11 + label_12 + label_13 @@ -586,38 +619,6 @@ - - - - 4 - 98 - 121 - 669 - - - - -1 - - - - - - 8 - 10 - 111 - 51 - - - - - Adobe 黑体 Std R - 25 - - - - LOGO - - @@ -644,143 +645,175 @@ Analyze - - - - 126 - 4 - 65 - 65 - - - - - 20 - - - - < - - - true - - - - - - 814 - 2 - 65 - 65 - - - - - 20 - - - - ? - - - true - - - - - - 884 - 0 - 65 - 65 - - - - - 20 - - - - - - - - true - - - - - - 960 - 0 - 65 - 65 - - - - - 20 - - - - [] - - - true - - - - - - 1034 - 0 - 65 - 65 - - - - - 20 - - - - X - - - true - - - + 120 0 971 - 80 + 91 + + + + 10 + 0 + 75 + 71 + + + + + 20 + + + + < + + + true + + + + + + 690 + 2 + 65 + 69 + + + + + 20 + + + + ? + + + true + + + + + + 758 + 2 + 65 + 71 + + + + + 20 + + + + - + + + true + + + + + + 828 + 2 + 71 + 75 + + + + + 20 + + + + [] + + + true + + + + + + 900 + 4 + 65 + 73 + + + + + 20 + + + + X + + + true + + - 0 - -1 - 120 + -1 + 2 + 123 771 + + + + 2 + 4 + 113 + 51 + + + + + Adobe 黑体 Std R + 25 + + + + LOGO + + + + + + -2 + 90 + 121 + 669 + + + + -1 + + - + 120 729 - 681 + 703 81 @@ -788,6 +821,26 @@ + + + + 114 + 0 + 16 + 761 + + + + + + + analyze_group + top_group + left_group + main_stackedwidget + lineEdit_7 + pushButton + left_shadow_label diff --git a/ora/gui/widget.py b/ora/gui/widget.py index eacba18..c87a8a4 100644 --- a/ora/gui/widget.py +++ b/ora/gui/widget.py @@ -92,6 +92,24 @@ def __init__(self, parent=None, text='', img_path=''): self.setLayout(self.layout) +class PicTabItem(QtWidgets.QWidget): + def __init__(self, parent=None, normal_img='', selected_img=''): + super(PicTabItem, self).__init__(parent) + self.normal_img = normal_img + self.selected_img = selected_img + self.label = QtWidgets.QLabel() + self.label.setPixmap(QtGui.QPixmap(normal_img)) + self.layout = QtWidgets.QGridLayout() + self.layout.addWidget(self.label) + self.setLayout(self.layout) + + def to_selected_img(self): + self.label.setPixmap(QtGui.QPixmap(self.selected_img)) + + def to_normal_img(self): + self.label.setPixmap(QtGui.QPixmap(self.normal_img)) + + class PicLabel(QtWidgets.QLabel): def __init__(self, parent=None): super(PicLabel, self).__init__(parent) From e8cca695520e9f2d1196d0ae5d6bada0a55d6433 Mon Sep 17 00:00:00 2001 From: chroming Date: Mon, 2 Apr 2018 23:15:30 +0800 Subject: [PATCH 10/57] update style --- ora/gui/gui_.py | 23 ++++++++++++++--------- ora/gui/main.ui | 33 +++++++++++++++++++++++++++------ ora/gui/preview.png | Bin 63093 -> 0 bytes ora/gui/style.py | 20 ++++++++++++++++++++ 4 files changed, 61 insertions(+), 15 deletions(-) delete mode 100644 ora/gui/preview.png create mode 100644 ora/gui/style.py diff --git a/ora/gui/gui_.py b/ora/gui/gui_.py index f7e91da..64c997e 100644 --- a/ora/gui/gui_.py +++ b/ora/gui/gui_.py @@ -1,9 +1,10 @@ from os.path import join from PyQt5 import uic, QtWidgets -from PyQt5.Qt import QIcon +from PyQt5.Qt import QIcon, QSize from widget import * +from style import * windowui, QtBaseClass = uic.loadUiType('main.ui') @@ -32,6 +33,11 @@ def _add_widget_item(parent, layout, widget_class, geometry, *args, **kwargs): def _get_icon(file_name): return QIcon(join(SRC_PATH, 'icons', file_name)) + @staticmethod + def _set_full_icon(widget, qicon): + widget.setIcon(qicon) + widget.setIconSize(QSize(100, 100)) + @staticmethod def _set_background_img(widget, file_name): widget.setStyleSheet("background-image: url(%s)" % (SRC_PATH + '/bgs/' + file_name)) @@ -53,15 +59,14 @@ def __init__(self): self.tab_listwidget.setFrameShape(QtWidgets.QFrame.NoFrame) self.video_listwidget.setFrameShape(QtWidgets.QFrame.NoFrame) - self._set_background_img(self.left_group, 'left_bg.png') - self._set_background_img(self.top_group, 'top_bg.png') - self._set_background_img(self.analyze_group, 'analyze_bg.png') - self._set_background_img(self.video_title_group, 'column_title_bg.png') - self._set_background_img(self.team_title_group, 'column_title_bg.png') - self._set_background_img(self.video_setting_group, 'right_bg.png') - self._set_background_img(self.team_setting_group, 'right_bg.png') - self._set_background_img(self.left_shadow_label, 'left_bg_shadow.png') + self._set_style() + + def _set_style(self): + for wi, bg in background_imgs.items(): + self._set_background_img(getattr(self, wi), bg) + for wi, ic in button_icons.items(): + self._set_full_icon(getattr(self, wi), self._get_icon(ic)) class MainUi(QtWidgets.QMainWindow, BeautiUi): diff --git a/ora/gui/main.ui b/ora/gui/main.ui index 4b3190c..5700d67 100644 --- a/ora/gui/main.ui +++ b/ora/gui/main.ui @@ -50,6 +50,9 @@ 8 + + video_listwidget + 30 @@ -394,6 +397,9 @@ 31 + + video_title_group + @@ -425,6 +431,9 @@ 131 + + video_setting_group + @@ -454,6 +463,9 @@ 41 + + team_title_group + @@ -485,6 +497,9 @@ 311 + + team_setting_group + @@ -654,6 +669,9 @@ 91 + + top_group + @@ -693,7 +711,7 @@ - ? + true @@ -714,7 +732,7 @@ - - + true @@ -735,7 +753,7 @@ - [] + true @@ -756,7 +774,7 @@ - X + true @@ -772,6 +790,9 @@ 771 + + left_group + @@ -797,9 +818,9 @@ - -2 + 6 90 - 121 + 115 669 diff --git a/ora/gui/preview.png b/ora/gui/preview.png deleted file mode 100644 index 3dcd28f6c151bc8325795d1f6c9fd4d689b759ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63093 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 Bbf*9S diff --git a/ora/gui/style.py b/ora/gui/style.py new file mode 100644 index 0000000..6d4768b --- /dev/null +++ b/ora/gui/style.py @@ -0,0 +1,20 @@ + +background_imgs = { + 'left_group': 'left_bg.png', + 'top_group': 'top_bg.png', + 'analyze_group': 'analyze_bg.png', + 'video_title_group': 'column_title_bg.png', + 'team_title_group': 'column_title_bg.png', + 'video_setting_group': 'right_bg.png', + 'team_setting_group': 'right_bg.png', + 'left_shadow_label': 'left_bg_shadow.png', + 'video_listwidget': '' +} + +button_icons = { + 'back_button': 'design_03', + 'help_button': 'design_05', + 'min_button': 'design_07', + 'max_button': 'design_08', + 'close_button': 'design_09' +} \ No newline at end of file From cd3a164eaac6999b39d8384e2bfdc56a0731811a Mon Sep 17 00:00:00 2001 From: chroming Date: Tue, 10 Apr 2018 00:05:38 +0800 Subject: [PATCH 11/57] update style --- ora/gui/gui_.py | 34 ++++++-- ora/gui/main.ui | 217 +++++++++++++++++++++++++++++++++------------- ora/gui/style.py | 5 ++ ora/gui/style.qss | 14 +++ ora/gui/widget.py | 5 +- 5 files changed, 205 insertions(+), 70 deletions(-) create mode 100644 ora/gui/style.qss diff --git a/ora/gui/gui_.py b/ora/gui/gui_.py index 64c997e..5373de7 100644 --- a/ora/gui/gui_.py +++ b/ora/gui/gui_.py @@ -30,17 +30,22 @@ def _add_widget_item(parent, layout, widget_class, geometry, *args, **kwargs): return widget @staticmethod - def _get_icon(file_name): - return QIcon(join(SRC_PATH, 'icons', file_name)) + def _get_icon(file_name, path='icons'): + return QIcon(join(SRC_PATH, path, file_name)) - @staticmethod - def _set_full_icon(widget, qicon): + def _set_full_icon(self, widget, file_name, path='icons'): + qicon = self._get_icon(file_name, path) widget.setIcon(qicon) widget.setIconSize(QSize(100, 100)) @staticmethod - def _set_background_img(widget, file_name): - widget.setStyleSheet("background-image: url(%s)" % (SRC_PATH + '/bgs/' + file_name)) + def _set_background_img(widget, file_name, path='/bgs/'): + widget.setStyleSheet("background-image: url(%s)" % (SRC_PATH + path + file_name)) + + def _set_hover_icon(self, widget, normal_file, hover_file): + self._set_full_icon(widget, normal_file, 'widgets') + widget.setAttribute(Qt.WA_Hover, True) + widget.setStyleSheet('background-image: url(%s)' % (SRC_PATH + '/widgets/' + hover_file)) @staticmethod def dynamic_base_class(instance, cls, cls_name): @@ -61,12 +66,25 @@ def __init__(self): self._set_style() + @staticmethod + def _get_child_widgets(widget, qclass): + for c in widget.children(): + if isinstance(c, qclass): + yield c + def _set_style(self): for wi, bg in background_imgs.items(): self._set_background_img(getattr(self, wi), bg) for wi, ic in button_icons.items(): - self._set_full_icon(getattr(self, wi), self._get_icon(ic)) + self._set_full_icon(getattr(self, wi), ic) + + for label in self._get_child_widgets(self.stackedWidgetPage1, QtWidgets.QLineEdit): + pass + + + #for wi, ics in hover_icons.items(): + # self._set_hover_icon(getattr(self, wi), *ics) class MainUi(QtWidgets.QMainWindow, BeautiUi): @@ -103,6 +121,8 @@ def _add_custome_item(listwidget, item_class, *args): if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) + with open('style.qss') as qss: + app.setStyleSheet(qss.read()) w = MainUi() w.show() sys.exit(app.exec_()) \ No newline at end of file diff --git a/ora/gui/main.ui b/ora/gui/main.ui index 5700d67..adcbc47 100644 --- a/ora/gui/main.ui +++ b/ora/gui/main.ui @@ -6,8 +6,8 @@ 0 0 - 1098 - 770 + 1100 + 787 @@ -20,7 +20,7 @@ 124 90 967 - 641 + 691 @@ -72,6 +72,9 @@ 20 + + false + @@ -82,6 +85,9 @@ 20 + + false + @@ -92,6 +98,9 @@ 20 + + false + @@ -102,6 +111,9 @@ 20 + + false + @@ -112,6 +124,9 @@ 20 + + false + @@ -122,6 +137,9 @@ 20 + + false + @@ -132,6 +150,12 @@ 20 + + false + + + false + @@ -142,6 +166,9 @@ 20 + + false + @@ -152,6 +179,9 @@ 20 + + false + @@ -162,6 +192,9 @@ 20 + + false + @@ -172,6 +205,9 @@ 20 + + false + @@ -182,6 +218,9 @@ 20 + + false + @@ -192,6 +231,9 @@ 20 + + false + @@ -202,6 +244,9 @@ 20 + + false + @@ -212,6 +257,9 @@ 20 + + false + @@ -222,6 +270,9 @@ 20 + + false + @@ -313,6 +364,9 @@ 20 + + false + @@ -323,6 +377,9 @@ 20 + + false + @@ -392,9 +449,9 @@ 700 - 0 - 261 - 31 + -2 + 271 + 35 @@ -407,9 +464,9 @@ 2 - 0 - 247 - 29 + -2 + 265 + 35 @@ -427,8 +484,8 @@ 700 30 - 261 - 131 + 271 + 133 @@ -459,7 +516,7 @@ 700 160 - 261 + 273 41 @@ -472,10 +529,10 @@ - 4 + 2 4 - 247 - 29 + 217 + 37 @@ -493,8 +550,8 @@ 700 200 - 261 - 311 + 271 + 491 @@ -504,6 +561,77 @@ + + + + 4 + 644 + 697 + 47 + + + + + + + + + 608 + 6 + 87 + 35 + + + + analyze_button + + + ANALYZE + + + + + + 552 + 8 + 39 + 31 + + + + save_button + + + false + + + + + + true + + + + + + 8 + 8 + 545 + 31 + + + + Save + + + false + + + path_lineedit + save_button + analyze_button + + analyze_group team_setting_group team_title_group video_setting_group @@ -537,6 +665,7 @@ label_11 label_12 label_13 + @@ -634,32 +763,6 @@ - - - - 128 - 736 - 587 - 31 - - - - Save - - - - - - 726 - 736 - 75 - 29 - - - - Analyze - - @@ -690,7 +793,7 @@ - < + true @@ -787,7 +890,7 @@ -1 2 123 - 771 + 783 @@ -802,7 +905,7 @@ 2 4 113 - 51 + 83 @@ -814,6 +917,9 @@ LOGO + + Qt::AlignCenter + @@ -824,24 +930,14 @@ 669 + + Qt::ScrollBarAlwaysOff + -1 - - - - 120 - 729 - 703 - 81 - - - - - - @@ -855,12 +951,9 @@ - analyze_group top_group left_group main_stackedwidget - lineEdit_7 - pushButton left_shadow_label diff --git a/ora/gui/style.py b/ora/gui/style.py index 6d4768b..044b9e7 100644 --- a/ora/gui/style.py +++ b/ora/gui/style.py @@ -17,4 +17,9 @@ 'min_button': 'design_07', 'max_button': 'design_08', 'close_button': 'design_09' +} + +hover_icons = { + 'analyze_button':['button_analyze.png', 'button_analyze_onhover.png'], + 'save_button': ['button_save.png', 'button_save_onhover.png'] } \ No newline at end of file diff --git a/ora/gui/style.qss b/ora/gui/style.qss new file mode 100644 index 0000000..f97f618 --- /dev/null +++ b/ora/gui/style.qss @@ -0,0 +1,14 @@ +QLineEdit { + background-color: rgb(23, 57, 86); +} +QStackedWidget { + background-color: rgb(13, 37, 59); +} +QLabel { + color: rgb(201, 216, 229); +} +QPushButton { + border-width: 2px; + border-color: rgb(37, 173, 231); + color: rgb(37, 173, 231); +} \ No newline at end of file diff --git a/ora/gui/widget.py b/ora/gui/widget.py index c87a8a4..ccf467a 100644 --- a/ora/gui/widget.py +++ b/ora/gui/widget.py @@ -126,7 +126,10 @@ def __init__(self, parent=None, text=''): class LineEdit(QtWidgets.QLineEdit): - pass + def __init__(self, parent=None, text=''): + super(LineEdit, self).__init__(parent) + self.setStyleSheet() + class ClickButton(QtWidgets.QPushButton): From 80766a59630378e4ccf1729ce3768a4ee78d3614 Mon Sep 17 00:00:00 2001 From: chroming Date: Sat, 14 Apr 2018 12:50:13 +0800 Subject: [PATCH 12/57] update video style --- ora/gui/gui_.py | 9 +++++++++ ora/gui/style.py | 14 ++++++++++++++ ora/gui/widget.py | 20 +++++++++++++------- 3 files changed, 36 insertions(+), 7 deletions(-) diff --git a/ora/gui/gui_.py b/ora/gui/gui_.py index 5373de7..7f1cd6a 100644 --- a/ora/gui/gui_.py +++ b/ora/gui/gui_.py @@ -42,6 +42,10 @@ def _set_full_icon(self, widget, file_name, path='icons'): def _set_background_img(widget, file_name, path='/bgs/'): widget.setStyleSheet("background-image: url(%s)" % (SRC_PATH + path + file_name)) + @staticmethod + def _set_background_color(widget, color): + widget.setStyleSheet("background-color: %s" % color) + def _set_hover_icon(self, widget, normal_file, hover_file): self._set_full_icon(widget, normal_file, 'widgets') widget.setAttribute(Qt.WA_Hover, True) @@ -79,10 +83,15 @@ def _set_style(self): for wi, ic in button_icons.items(): self._set_full_icon(getattr(self, wi), ic) + for wi, cl in background_colors.items(): + self._set_background_color(getattr(self, wi), cl) + for label in self._get_child_widgets(self.stackedWidgetPage1, QtWidgets.QLineEdit): pass + + #for wi, ics in hover_icons.items(): # self._set_hover_icon(getattr(self, wi), *ics) diff --git a/ora/gui/style.py b/ora/gui/style.py index 044b9e7..e6b2cb9 100644 --- a/ora/gui/style.py +++ b/ora/gui/style.py @@ -11,6 +11,10 @@ 'video_listwidget': '' } +background_colors = { + 'video_listwidget': '#143048' +} + button_icons = { 'back_button': 'design_03', 'help_button': 'design_05', @@ -22,4 +26,14 @@ hover_icons = { 'analyze_button':['button_analyze.png', 'button_analyze_onhover.png'], 'save_button': ['button_save.png', 'button_save_onhover.png'] +} + +text_colors = { + 'textUpLeftLabel': '#ffffff', + 'textUpRightLabel': '#3df0d0', + 'textDownLabelTeam1': '#c9d8e5', + 'textDownLabelTeam2': '#c9d8e5', + 'textDownLeftLabel': '#80bce2', + 'textDownRightLabel': '#80bce2' + } \ No newline at end of file diff --git a/ora/gui/widget.py b/ora/gui/widget.py index ccf467a..184b67f 100644 --- a/ora/gui/widget.py +++ b/ora/gui/widget.py @@ -4,6 +4,8 @@ from PyQt5.QtCore import Qt from PyQt5.Qt import QSize +from style import text_colors + class ListWidget(QtWidgets.QListWidget): def __init__(self, parent=None): @@ -42,16 +44,11 @@ def __init__(self, parent=None, up_left_str='', up_right_str='', down_left_str=' self.allQHBoxLayout = QtWidgets.QHBoxLayout() self.iconQLabel = QtWidgets.QLabel() + self.iconQLabel.setFixedSize(200, 110) self.allQHBoxLayout.addWidget(self.iconQLabel, 0) self.allQHBoxLayout.addLayout(self.allTextLayout, 1) self.setLayout(self.allQHBoxLayout) - self.textUpLeftLabel.setStyleSheet(''' - color: rgb(0, 0, 255); - ''') - self.textUpRightLabel.setStyleSheet(''' - color: rgb(255, 0, 0); - ''') self.setTextDown(down_left_str) self.setLabelText(self.textUpLeftLabel, up_left_str) @@ -62,7 +59,16 @@ def __init__(self, parent=None, up_left_str='', up_right_str='', down_left_str=' self.setLabelText(self.textDownRightLabel, down_right_str) if icon_path: - self.setIcon(icon_path) + # self.setIcon(icon_path) + self.iconQLabel.setPixmap(QtGui.QPixmap(icon_path)) + self.iconQLabel.setScaledContents(True) + + for w, c in text_colors.items(): + self.set_text_color(getattr(self, w), c) + + @staticmethod + def set_text_color(widget, color): + widget.setStyleSheet("color: %s" % color) @staticmethod def setLabelText(label, text): From bb4ece743cb36a82c3162514fc932cb50db51d35 Mon Sep 17 00:00:00 2001 From: chroming Date: Mon, 23 Apr 2018 01:23:59 +0800 Subject: [PATCH 13/57] more style;mixin class;functions --- ora/gui/functions.py | 39 ++++++++++++++++++++++++++++ ora/gui/gui_.py | 44 +++++++------------------------ ora/gui/main.ui | 7 +++-- ora/gui/mixin.py | 62 ++++++++++++++++++++++++++++++++++++++++++++ ora/gui/style.qss | 1 + ora/gui/widget.py | 45 +++----------------------------- 6 files changed, 117 insertions(+), 81 deletions(-) create mode 100644 ora/gui/functions.py create mode 100644 ora/gui/mixin.py diff --git a/ora/gui/functions.py b/ora/gui/functions.py new file mode 100644 index 0000000..8bf24bf --- /dev/null +++ b/ora/gui/functions.py @@ -0,0 +1,39 @@ +from os.path import join + +from PyQt5.Qt import QIcon, QSize + +SRC_PATH = './images' + + +def dynamic_base_class(instance, cls, cls_name): + instance.__class__ = type(cls_name, (cls, instance.__class__), {}) + return instance + + +def set_background_img(widget, file_name, path='/bgs/'): + widget.setStyleSheet("background-image: url(%s)" % (SRC_PATH + path + file_name)) + + +def set_background_color(widget, color): + widget.setStyleSheet("background-color: %s" % color) + + +def pic_to_icon(file_name, path='icons'): + return QIcon(join(SRC_PATH, path, file_name)) + + +def set_full_icon(self, widget, file_name, path='icons'): + qicon = self._get_icon(file_name, path) + widget.setIcon(qicon) + widget.setIconSize(QSize(100, 100)) + + +def set_qclass_child_widgets_style(widget, qclass, style): + for c in get_qclass_child_widgets(widget, qclass): + c.setStyleSheet(style) + + +def get_qclass_child_widgets(widget, qclass): + for c in widget.children(): + if isinstance(c, qclass): + yield c \ No newline at end of file diff --git a/ora/gui/gui_.py b/ora/gui/gui_.py index 7f1cd6a..8e01236 100644 --- a/ora/gui/gui_.py +++ b/ora/gui/gui_.py @@ -1,11 +1,11 @@ -from os.path import join -from PyQt5 import uic, QtWidgets -from PyQt5.Qt import QIcon, QSize +from PyQt5 import uic, QtCore from widget import * from style import * +from functions import * +QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling, True) windowui, QtBaseClass = uic.loadUiType('main.ui') SRC_PATH = './images' @@ -29,33 +29,11 @@ def _add_widget_item(parent, layout, widget_class, geometry, *args, **kwargs): layout.addWidget(widget) return widget - @staticmethod - def _get_icon(file_name, path='icons'): - return QIcon(join(SRC_PATH, path, file_name)) - - def _set_full_icon(self, widget, file_name, path='icons'): - qicon = self._get_icon(file_name, path) - widget.setIcon(qicon) - widget.setIconSize(QSize(100, 100)) - - @staticmethod - def _set_background_img(widget, file_name, path='/bgs/'): - widget.setStyleSheet("background-image: url(%s)" % (SRC_PATH + path + file_name)) - - @staticmethod - def _set_background_color(widget, color): - widget.setStyleSheet("background-color: %s" % color) - def _set_hover_icon(self, widget, normal_file, hover_file): - self._set_full_icon(widget, normal_file, 'widgets') + set_full_icon(widget, normal_file, 'widgets') widget.setAttribute(Qt.WA_Hover, True) widget.setStyleSheet('background-image: url(%s)' % (SRC_PATH + '/widgets/' + hover_file)) - @staticmethod - def dynamic_base_class(instance, cls, cls_name): - instance.__class__ = type(cls_name, (cls, instance.__class__), {}) - return instance - class BeautiUi(windowui, UiFunc, WindowDragMixin, ControlButtonMixin): def __init__(self): @@ -70,23 +48,19 @@ def __init__(self): self._set_style() - @staticmethod - def _get_child_widgets(widget, qclass): - for c in widget.children(): - if isinstance(c, qclass): - yield c + self._set_full_icon(self.publish_box, 'switch_on.png') def _set_style(self): for wi, bg in background_imgs.items(): - self._set_background_img(getattr(self, wi), bg) + set_background_img(getattr(self, wi), bg) for wi, ic in button_icons.items(): - self._set_full_icon(getattr(self, wi), ic) + set_full_icon(getattr(self, wi), ic) for wi, cl in background_colors.items(): - self._set_background_color(getattr(self, wi), cl) + set_background_color(getattr(self, wi), cl) - for label in self._get_child_widgets(self.stackedWidgetPage1, QtWidgets.QLineEdit): + for label in get_qclass_child_widgets(self.stackedWidgetPage1, QtWidgets.QLineEdit): pass diff --git a/ora/gui/main.ui b/ora/gui/main.ui index adcbc47..2b17356 100644 --- a/ora/gui/main.ui +++ b/ora/gui/main.ui @@ -339,7 +339,7 @@ Publish your analysis - + 886 @@ -631,7 +631,6 @@ save_button analyze_button - analyze_group team_setting_group team_title_group video_setting_group @@ -658,14 +657,14 @@ radioButton radioButton_2 label_8 - checkBox_5 + publish_box lineEdit_18 lineEdit_19 label_10 label_11 label_12 label_13 - + analyze_group diff --git a/ora/gui/mixin.py b/ora/gui/mixin.py new file mode 100644 index 0000000..75fbf7a --- /dev/null +++ b/ora/gui/mixin.py @@ -0,0 +1,62 @@ +from PyQt5 import QtWidgets +from PyQt5.QtCore import Qt + + +class MousePressChangeBackgroundMixin(object): + def __init__(self): + super(MousePressChangeBackgroundMixin, self).__init__() + self.setMouseTracking(True) + + def mouseMoveEvent(self, QMouseEvent): + pass + + def mousePressEvent(self, QMouseEvent): + self.setStyleSheet("background-color: %s" % "#11283E") + for c in self.children(): + if isinstance(c, QtWidgets.QLabel): + c.setStyleSheet("background-color: %s" % "#11283E") + + def mouseReleaseEvent(self, QMouseEvent): + self.setStyleSheet("background-color: %s" % "#14304A") + for c in self.children(): + if isinstance(c, QtWidgets.QLabel): + c.setStyleSheet("background-color: %s" % "#14304A") + + + +class WindowDragMixin(object): + def mousePressEvent(self, event): + if event.button() == Qt.LeftButton: + self.m_drag = True + self.m_DragPosition = event.globalPos() - self.pos() + event.accept() + + def mouseMoveEvent(self, QMouseEvent): + if QMouseEvent.buttons() and Qt.LeftButton: + self.move(QMouseEvent.globalPos() - self.m_DragPosition) + QMouseEvent.accept() + + def mouseReleaseEvent(self, QMouseEvent): + self.m_drag = False + + +class ControlButtonMixin(QtWidgets.QWidget): + def __init__(self, ): + super(ControlButtonMixin, self).__init__() + + def set_control_button(self, min_button, max_button, exit_button, max_icon='', resize_icon=''): + self.max_button = max_button + self.max_icon = max_icon + self.resize_icon = resize_icon + + min_button.clicked.connect(self.showMinimized) + max_button.clicked.connect(self._max_button_clicked) + exit_button.clicked.connect(self.close) + + def _max_button_clicked(self): + if self.isMaximized(): + self.showNormal() + self.max_button.setText(self.resize_icon) + else: + self.showMaximized() + self.max_button.setText(self.resize_icon) diff --git a/ora/gui/style.qss b/ora/gui/style.qss index f97f618..7ae7f6c 100644 --- a/ora/gui/style.qss +++ b/ora/gui/style.qss @@ -1,5 +1,6 @@ QLineEdit { background-color: rgb(23, 57, 86); + border-radius: 3px; } QStackedWidget { background-color: rgb(13, 37, 59); diff --git a/ora/gui/widget.py b/ora/gui/widget.py index 184b67f..5b1fea9 100644 --- a/ora/gui/widget.py +++ b/ora/gui/widget.py @@ -1,10 +1,10 @@ import sys -from PyQt5 import QtGui, QtWidgets -from PyQt5.QtCore import Qt +from PyQt5 import QtGui from PyQt5.Qt import QSize from style import text_colors +from mixin import * class ListWidget(QtWidgets.QListWidget): @@ -18,7 +18,7 @@ def __init__(self, parent=None): super(StackedWidget, self).__init__(parent) -class VideoItem(QtWidgets.QWidget): +class VideoItem(QtWidgets.QWidget, MousePressChangeBackgroundMixin): def __init__(self, parent=None, up_left_str='', up_right_str='', down_left_str='', down_right_str='', icon_path=''): super(VideoItem, self).__init__(parent) @@ -181,45 +181,6 @@ def __init__(self): self.setCentralWidget(self.listwidget) -class WindowDragMixin(object): - def mousePressEvent(self, event): - if event.button() == Qt.LeftButton: - self.m_drag = True - self.m_DragPosition = event.globalPos() - self.pos() - event.accept() - - def mouseMoveEvent(self, QMouseEvent): - if QMouseEvent.buttons() and Qt.LeftButton: - self.move(QMouseEvent.globalPos() - self.m_DragPosition) - QMouseEvent.accept() - - def mouseReleaseEvent(self, QMouseEvent): - self.m_drag = False - - -class ControlButtonMixin(QtWidgets.QWidget): - def __init__(self, ): - super(ControlButtonMixin, self).__init__() - - def set_control_button(self, min_button, max_button, exit_button, max_icon='', resize_icon=''): - self.max_button = max_button - self.max_icon = max_icon - self.resize_icon = resize_icon - - min_button.clicked.connect(self.showMinimized) - max_button.clicked.connect(self._max_button_clicked) - exit_button.clicked.connect(self.close) - - def _max_button_clicked(self): - if self.isMaximized(): - self.showNormal() - self.max_button.setText(self.resize_icon) - else: - self.showMaximized() - self.max_button.setText(self.resize_icon) - - - if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) w = MainWindow() From bfeef91d1235bb6e48b5dff09afe986de441b0ac Mon Sep 17 00:00:00 2001 From: chroming Date: Wed, 2 May 2018 01:00:57 +0800 Subject: [PATCH 14/57] update style --- ora/gui/functions.py | 4 +- ora/gui/gui_.py | 4 +- ora/gui/images/bgs/analyze_bg.png | Bin 0 -> 1963 bytes ora/gui/images/bgs/column_title_bg.png | Bin 0 -> 1630 bytes ora/gui/images/bgs/left_bg.png | Bin 0 -> 3168 bytes ora/gui/images/bgs/left_bg_shadow.png | Bin 0 -> 149 bytes ora/gui/images/bgs/right_bg.png | Bin 0 -> 6185 bytes ora/gui/images/bgs/top_bg.png | Bin 0 -> 4991 bytes ora/gui/images/icons/design_03.png | Bin 0 -> 1243 bytes ora/gui/images/icons/design_05.png | Bin 0 -> 1636 bytes ora/gui/images/icons/design_07.png | Bin 0 -> 1152 bytes ora/gui/images/icons/design_08.png | Bin 0 -> 1476 bytes ora/gui/images/icons/design_09.png | Bin 0 -> 1384 bytes ora/gui/images/icons/info-icon.png | Bin 0 -> 314 bytes ora/gui/images/tab_icons/1_normal.png | Bin 0 -> 2489 bytes ora/gui/images/tab_icons/1_selected.png | Bin 0 -> 2529 bytes ora/gui/images/tab_icons/2_normal.png | Bin 0 -> 2897 bytes ora/gui/images/tab_icons/2_selected.png | Bin 0 -> 2998 bytes ora/gui/images/tab_icons/3_normal.png | Bin 0 -> 3401 bytes ora/gui/images/tab_icons/3_selected.png | Bin 0 -> 3534 bytes ora/gui/images/widgets/button_analyze.png | Bin 0 -> 885 bytes .../images/widgets/button_analyze_onhover.png | Bin 0 -> 1215 bytes ora/gui/images/widgets/button_save.png | Bin 0 -> 631 bytes .../images/widgets/button_save_onhover.png | Bin 0 -> 598 bytes ora/gui/images/widgets/radiobox_normal.png | Bin 0 -> 598 bytes ora/gui/images/widgets/radiobox_normal_f.png | Bin 0 -> 685 bytes ora/gui/images/widgets/radiobox_selected.png | Bin 0 -> 1053 bytes .../images/widgets/radiobox_selected_f.png | Bin 0 -> 1118 bytes ora/gui/images/widgets/switch_off.png | Bin 0 -> 2146 bytes ora/gui/images/widgets/switch_off_f.png | Bin 0 -> 1997 bytes ora/gui/images/widgets/switch_on.png | Bin 0 -> 2216 bytes ora/gui/images/widgets/switch_on_f.png | Bin 0 -> 2039 bytes ora/gui/images/widgets/video_container.png | Bin 0 -> 1750 bytes ora/gui/main.ui | 48 ++++++++---------- ora/gui/mixin.py | 5 +- ora/gui/preview.png | Bin 0 -> 235069 bytes ora/gui/style.py | 2 +- ora/gui/style.qss | 22 +++++++- ora/gui/widget.py | 20 ++++++-- 39 files changed, 68 insertions(+), 37 deletions(-) create mode 100644 ora/gui/images/bgs/analyze_bg.png create mode 100644 ora/gui/images/bgs/column_title_bg.png create mode 100644 ora/gui/images/bgs/left_bg.png create mode 100644 ora/gui/images/bgs/left_bg_shadow.png create mode 100644 ora/gui/images/bgs/right_bg.png create mode 100644 ora/gui/images/bgs/top_bg.png create mode 100644 ora/gui/images/icons/design_03.png create mode 100644 ora/gui/images/icons/design_05.png create mode 100644 ora/gui/images/icons/design_07.png create mode 100644 ora/gui/images/icons/design_08.png create mode 100644 ora/gui/images/icons/design_09.png create mode 100644 ora/gui/images/icons/info-icon.png create mode 100644 ora/gui/images/tab_icons/1_normal.png create mode 100644 ora/gui/images/tab_icons/1_selected.png create mode 100644 ora/gui/images/tab_icons/2_normal.png create mode 100644 ora/gui/images/tab_icons/2_selected.png create mode 100644 ora/gui/images/tab_icons/3_normal.png create mode 100644 ora/gui/images/tab_icons/3_selected.png create mode 100644 ora/gui/images/widgets/button_analyze.png create mode 100644 ora/gui/images/widgets/button_analyze_onhover.png create mode 100644 ora/gui/images/widgets/button_save.png create mode 100644 ora/gui/images/widgets/button_save_onhover.png create mode 100644 ora/gui/images/widgets/radiobox_normal.png create mode 100644 ora/gui/images/widgets/radiobox_normal_f.png create mode 100644 ora/gui/images/widgets/radiobox_selected.png create mode 100644 ora/gui/images/widgets/radiobox_selected_f.png create mode 100644 ora/gui/images/widgets/switch_off.png create mode 100644 ora/gui/images/widgets/switch_off_f.png create mode 100644 ora/gui/images/widgets/switch_on.png create mode 100644 ora/gui/images/widgets/switch_on_f.png create mode 100644 ora/gui/images/widgets/video_container.png create mode 100644 ora/gui/preview.png diff --git a/ora/gui/functions.py b/ora/gui/functions.py index 8bf24bf..9efae2f 100644 --- a/ora/gui/functions.py +++ b/ora/gui/functions.py @@ -22,8 +22,8 @@ def pic_to_icon(file_name, path='icons'): return QIcon(join(SRC_PATH, path, file_name)) -def set_full_icon(self, widget, file_name, path='icons'): - qicon = self._get_icon(file_name, path) +def set_full_icon(widget, file_name, path='icons'): + qicon = pic_to_icon(file_name, path) widget.setIcon(qicon) widget.setIconSize(QSize(100, 100)) diff --git a/ora/gui/gui_.py b/ora/gui/gui_.py index 8e01236..cd53ba5 100644 --- a/ora/gui/gui_.py +++ b/ora/gui/gui_.py @@ -48,7 +48,7 @@ def __init__(self): self._set_style() - self._set_full_icon(self.publish_box, 'switch_on.png') + set_full_icon(self.publish_box, 'switch_on.png') def _set_style(self): for wi, bg in background_imgs.items(): @@ -66,6 +66,7 @@ def _set_style(self): + #for wi, ics in hover_icons.items(): # self._set_hover_icon(getattr(self, wi), *ics) @@ -96,6 +97,7 @@ def _init_default(self): @staticmethod def _add_custome_item(listwidget, item_class, *args): citem = item_class(listwidget, *args) + citem.setObjectName('DyItem') item = QtWidgets.QListWidgetItem(listwidget) item.setSizeHint(citem.sizeHint()) listwidget.addItem(item) diff --git a/ora/gui/images/bgs/analyze_bg.png b/ora/gui/images/bgs/analyze_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..51d1816eff589ed026369d01b89849fb74f188c9 GIT binary patch literal 1963 zcmbVNYfMvT82(zpaT)Uh8)2JztQ*5idoC@|(|}M~5H?^1N$5<29NL34&~xfJhf&N_ z(z)r-IMINYKx8qSCT8fCn9->lGh0N6RiX*e$>JQ0;AI+(@iuku*HZL{@yGh3{VwnO zJkR^Q@0WgID_xcl_huYID50p(T8@yq0oE&G)bQQ;{Ahqpa@Cs3tp$@@u*=reDT>!bl1)ubx+c9&lva^6%d#ZJkPM@R2(8>KD4b6# z$O|F}R$g{WZm;4N1p*^-HDaTZtpTOs5NHTc$av~fEYD^zWZfFYEU=^K>9$rw2tl1j4(Yf3% zlZ&T#j^$iheLBr(T^RUqD~WQ*?%&W3&ci2CL0*8ECCB-N0yRV-jW;n%D1_|6tt%@w|j z*GG;ES8|hD%4SUD%{ir0?QH(+*wf`Re>iK2Z%b=a$9#F?0Xs7E{^ku|UmtmNA!XyC zn|r@;2RCvf0+G1k&Yw*qg1BBysr;L7p`*R??(aTb`A2eV*-9_JgpYaJp=ycU6SZ{D z;BWSUgms6x8bxt|fzHL_>idu1pv+^A!&^>lH~ttS^}yMlZiG?~bjC|M)E|g_vTk!{eM zcKBMa>g~#R##a=KIc^osLc6*rN^Lj}c`X&ec3A~6nYX{2y>;<+U_gblt4`jSaBP!R zxo~;bVkF_+OzR{2 zytGhmM;SXD6^%~5zPtPR?2a-7{#miy;1Mv|w;ufQN2uYxbni}CyHC>D3sjfqR$}uH{WTpy147vCP-RF+;`u0G zO(;X#YKPD{S$RlY?F@{L*Lf6e)ZE+gK=$D z@W`iXXt<>7ogW8I@5lHd%&~Ag@Fp7JVZk1SQGw|2mH}vmx+OdkA#=igsrKtyckrRv zgF(Qhw7g|XHU}FY9>cvtc9;n0^RcbJgAtf(c+iTmLzwt0;={81gib&7Dx^^sy+ogX5vt4T0fp#d;xO=U{e=$RpED1o!S|8 nE-hghi2RmI>ALEBoTHkK;;!7j;Iy1};J?qJ{8DRAUbX)}reoXX literal 0 HcmV?d00001 diff --git a/ora/gui/images/bgs/column_title_bg.png b/ora/gui/images/bgs/column_title_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..6d3c5bda410718c2a8bf647c9c0ba43dc7b69d06 GIT binary patch literal 1630 zcmbVMTTmNS7+xY#8o;)+NDIdxYGG&|9CYf`OVk#njLcXwwM@NKJJYEkGgZ`zif6M4`oQ$TJS6`) z=llNe`~Ux(Jl5E-Bi~SLKoBI~Tjy>J_u}N;_rRa^ipQ_)6g!kKD+6RZ zFSY~J8(=#@6JYuN-cLadf?U@tH2W35?{As zjC1e4Z$t&&VQi`P5kAQUx`es`8SETrXyyjGIhr?a-GbIc7?>ac6c&vHdV(P);xMN2 zGB8%RaU+_7DBTXDX3FntL|vi`&}tKfairCZ+GrC=5wzJ_g_;S{h7&fNv|t3u5ENsf z(e%d%)nvYdX>!-5wcyHO>{1ko!SQf7YzkXUqTGp-G)?1#88@3Th`>VqL4}QA!BBZ7 zgByf6S&$S#45DgAwq5K~97gC=D(5Q%kT&*;iQSc0|B+J6gs3dfq!i* ziw-sSO8{>IA+b;9;5<6YGi2DiYYVAB=!UsN7T{3W9=FK#1wc^ox*bM%V&Vm!;Q;|y zn&mM|HEG6p%F1Ch2O~>|m8314o#Y8FlV>@;lkzw%q`lhgq3tB;u{()cyNjZ2w8u?3 zErcz@^#(%<8{|MnTY%bWuJxK+#w7z*5#?r4?8)4M#x7A2LtUbTx?Jey79q%s;m|GW zgtUU)Ko<4^zE&0kXsX4Gu#9{MAV|u>nlY=LqA`lMl9;{PYQ{*rjbJU-cAM1F#q1z`TOqQ`}wJ-XGewN zS1w7zSBq-;4{pj|=(OhyeYe0Idw8XITcRKqcShqMb#53Rm|h)=M+++rvlD%-{o3Nl znqTMZFY8jMXX9Fs_=u zN-n&t9u2RJ4gUP(TW9n-i2Ar8=ZyYfG?&#UI_R>-qE)J%CM4=2(X zii()`LnA7wW(Ib$(6BanLghaKR&;9?$LBUbr&Tz3eNr-tx?CWIP<0qcK ztb6-HWffbhitUD*6M3)~e_yQqt94JJAjxK{qr0*Ajg&XT#Ok!Wcv2lky}$3Fl20ID xWY7349E)0M>BS~(CO1j>>L}o3OV<6Q%R|2SE!v~E$1bV=_+C$gd(_#s{~uTDLq`Ar literal 0 HcmV?d00001 diff --git a/ora/gui/images/bgs/left_bg.png b/ora/gui/images/bgs/left_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..85f89dd2797a860591b0c701e5c269644b6fea0e GIT binary patch literal 3168 zcmb_ec~nz(7LMqkM@7a`7X(ZU#|0$IOF|$)h>!#d2r5v5ifBk4Neao!MiPPnmkMQ6 zsJ4JRRK&3^P*wp2rh`ZUQIS)TK#a-~6eNPQ4wYqIL@eiw!x=k$|GfL&`|iEpcbDIJ zDO&=4EatD6k3b+Sd_Q9Z!FLq`F&j0{47PYgU_X4bmNUcT!BCW3$(Di$Pc9S*qI`vH z9vB3&xp9(ua0Bci5rl-v!vZ!@Igk*`Hes+Tp&0f?AU4ocVm2oll%pa+ovA0VcKe8FdGDHyB{4B@DwITS9M=7HLvqQU`$pq!0T31dVus>&VxHZB#m zO|Nli)LV!=+8sSfDlA|NiVjIZlrxr$;Q%B8%7uaj$ao5Ypjasf?njjUlrvnrnG>0SFdOP-sQ_*YJB9&qVuhec z?#pmT!(Xsm0hh`J@gSSR=300F}#lQXr40zolT zQ?P{($srjZ5~JvJ)H;?x#D$bH2UCY81v5aYKml^SrH~Nyw!~Dy2hvA@cz{e~6EGy0 zKZeXD0T@?j5&;9ay5QMFQltxs085|r=l;>s;b2lY)0|A3o2gguFq+KwTL3@2-y={2 zFOL-7l58K#dIVzLL0^Vvh)Ub9vruTgKi#|a?D4ZL82K#SgjwfHzppIJj+|e7A@6dz zUT|v8s8wE8^3ibA_-LQ8=Bn$2+d{f+nnbW?WYnm3L?&Dvd!}f6F+>RUu(Hf`8VMEW z;5wJ<`cH>bm(q4+NGiML+tmdnbxItUFS+fJOu5usT`N1kqXg^RO?m2}$!ylw`gBNK zw8#hDn%c0fBKuUGW;LPxCavspj;3JTx!DjKH!3P9bu?~MjF{i4NEGk7;D*>u=CLp!ial>8W=ohTYLuTWIK7T5nPEmJdm+ttOvXRb0ya`91n zQ&`%f?Rj)f70anfX1%_8Kx4G+Y?1gs_{AC-&;6S2qaskkFY!q zYZ-A)krAnReCH>60Pz9&&>1B1mUfo+rfT!t7hy%hLj|;n@LhZIefBs0J;ARuad9Ti zm};E&s@{Ist+)32kH?(`3NGGgIhtqL$3M27K2~pB+ zg_We{j76~IkJCP!xUJm%aZ3)@rV+!+O(~V{{m8nlAeqhFh}YrURBCAR(W;U^L=bNK zG)-##lDnHr$~&Z=|F@n@1OG?!KdK2jsC!8N%zs1ekB9i5H*v*`C2Ngm9j=9^uhHJ0HPdpD_;ddE)zklQi?wtGaCd zyor8u?9I*2xhctM%iWM&;hF>5b_3K~a@Wcx?@r*dw4@y#G0ndI!$mIRgXsqy_4C?> zGJo1>#cOA+lFceAzPi{V+E*E0)iE3z{ie5JOZ=r2w=ZMdZrZF-v_+kZza)TtRwtb@)HbM_NY}#jfp0Z+}=8xoKcwqP|f#@cav}V{pjQPs6d9P**7Vl36~c@8S*WMtiDH)Bi_XF)pSE`~g6nUWooV40txPP8AKV$w z>tl6!jtuoj=OzsG-cd`qby*(gXdU(U3@UFQD@{XI-E+S&l@uHCx>akuf9#ckIwZej zcizyYyAM2RD23QLe>H5oQ**bay?>eG<&K05=T&(V$Gbb%4HkN54ZV>6ZFy2>gG*ii z_lDkRO<2d#kVj7oci(`FfwTnMao0^(jQe;>SzG5OXwR;++xfHw_8cajXMl3*F|6~N2 R4w(M=eVKubJg?pR{|%1-6-EF6 literal 0 HcmV?d00001 diff --git a/ora/gui/images/bgs/left_bg_shadow.png b/ora/gui/images/bgs/left_bg_shadow.png new file mode 100644 index 0000000000000000000000000000000000000000..110be633f5db16110b8f91c5ea3cdd5871b030e9 GIT binary patch literal 149 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz#{3LHR^f#IU?KOh<7>EaktG3V{cg@O$R3=A8W zmy2q+`1*d2pUgR7$B}2N(n`bqx2}qvdy!qSMZk%J1fu>3w;wCp()UMPZ-A`xboFyt I=akR{0C;FAg#Z8m literal 0 HcmV?d00001 diff --git a/ora/gui/images/bgs/right_bg.png b/ora/gui/images/bgs/right_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..f88bd52634fcd453388c0c58c0908ac252f86a3b GIT binary patch literal 6185 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 literal 0 HcmV?d00001 diff --git a/ora/gui/images/bgs/top_bg.png b/ora/gui/images/bgs/top_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..e45f0c862a6ae12703aeb12ab171c6b7f0b7fe39 GIT binary patch literal 4991 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 literal 0 HcmV?d00001 diff --git a/ora/gui/images/icons/design_03.png b/ora/gui/images/icons/design_03.png new file mode 100644 index 0000000000000000000000000000000000000000..7092b5246ade26d3fd4432e138569b934b05a4b8 GIT binary patch literal 1243 zcmbVMe`wrP9M4fHZP%7r2f8Wanf{@pOY&Zl`;pjNy(U+C!|S^1!OH9(%_Z;dvNn0S zB;8#*i$jqi40SLB|Mn06lOc?aDb63I#W6%dkd039rU>fPKinpRp)YN(`p2<94CKA< zd-;66zrT5Ha^ktZo;^Jb!}R6G^#a|s=)Mrz0o`_o+39eKl*78=VIqPa9@Di%9(01P)&s=&da0UFM{8>o#myP;R5a&#@QU;`4) zrP)oVrt_0PBR&RkKEatt7C}~;5boS8|WY`;D6m{iw=s59u^8XAPc@p>rozT zk!kK8Y$yU!Z`4D+O^ag8>%?4eup8#|G)uqmmTjpPhS*RHi<9C=NcW=l^yenyrviZ&V-vq}b`Y)Vm5$&{#NQCxJ*+qRkkI+fzUf+jE3n zIy^p|67p{4eTIoKIXzQsT>tg@SKXh&ovXE>P%ZGdV3r}^wz0%+8zx3*kzxF;d z{K=`eKDvG2;@_FBv!may-T1NV*1>(xG#@|F^)b`Y3)?S){+}TuK#?e`pc<-fzQC|A8E6*bPNylo3Z8|UMhlhbQa8@ufaOp_2dkkKmO(` zvrpVzJ$KExcS1gTZRKk3&<Ob2sgsC4G^cjL>^?(BB)Kefb|5&zB1T literal 0 HcmV?d00001 diff --git a/ora/gui/images/icons/design_05.png b/ora/gui/images/icons/design_05.png new file mode 100644 index 0000000000000000000000000000000000000000..d04d24ad615d8f341635e52d46b59976ce5c93b6 GIT binary patch literal 1636 zcmbVMeNfY881Ko{t$^rI1ScAbIvu2GlF~N80<|r|j$(zX9f#92N!tKzY7*9h!#g`r z@f%MMb<hn-sgSa-|zW; zQfan*>g{^cR!_cZzSSaFFHj8-9^wF_Q?qa`|uwb4Mfi*V3+ zG(nXuI89HLNWvB{7OP-2<=`aik`qCU+~@L$Y>8xQy3a$9#k2s}Xb0og%5HygR0c4V zRyHTaq%e8(w3Epy=jiz%qZlyo$V6)# zWykXjnFF@OomS=)1P=~DUawc~Mdd8#fM5*6AO!*;2q+>zzRWEUKG4l4hBO#xp5z#h zz_4y0sFAR-rGi!_dfFd?%VRPtRm}k;U9S-%t=JdV|m47_lfsiGd|cU9?-sHfUwyjhtdAoT3#pfe{pl zroaeDsgxv$k)nj!l`w{q8kka$AwAFH>y%0zrk{o(Mob68Mh%8()EY!@gj19XC89Tk zxY=%AAlxJ!vdxIL2e_K&a&bLJ69UUwShgh81!gBJu)LG?0D3(zc@E>IST8>%SfT!a z4K&BRLsOX?>jL^xj5E(LZ>JTo3MCLwsZn8|ic-R$CPj&Wutu#QP^C?+M8weh`P7T1 z4icS$f_?I@z6l+P%@`D)PJy_2I!Cly93D=bl5KlD2PKk0)!7D}#TV$_oa(gbMlSJo zg(pQz{3OW64RuKaQ;7HJ4HV@I-&N>o#}zCvkSa4PkpV5FC-_k4Ir z`iamn!#vB|GOoI#^1#9iqenbBK#iL@qj$U)gsyZ1uIQugBKh;SpSTxp{WNY1*wuO~=Ry3+iiUMR4D0;; zQRY4Kn&REF&+@+wxk7WhTW@7m)NH!>q|kUTE6Gv6%dxii$c40vo#8v<17q%Iq3L$;~?sMa|7BEE>Kq;*NQD^qTgDmW$eTZ&T8}sYh~ReTTjJi1N(zV-N7gn3I1N z&jKg(f_3@2?uBgWX5W&Q#_o^DwS5;;vAnu{>q*VbSt_^FA3x=o{a z@Ns48in79jy%pxL9^;M7_rh*peRt@U-nZ`jg>L=7qTjE*_PHcXvf`Ikr^=nYIQZYs MHs%@{rp@>N4Ud~#-I_A`F`K;yUvw?{?kp3 zhZ`x1YD)L1S+dLINgmio-pB4dq{-HbQ^R-=6>v#&A(b#t9)h%`jlwL{jOodjFh)^( zC(Yb29?qOqbY!ubufvuthoC7c)>U>ieH>zthohz)r#GKGqk(C}>7h`D&p1g~H2Y>; zI5^Xv(`UwY*`T{lfmm4~1}um*P_`y)PbtUgZMzDQ{cDZ}+bVcGPFI{7&J2Jgav=z@ zVMZ4u5kzEG2=lTibpnwWA{-y#gdoEU3LjR2GN>+^u(?J-$*R3oE^>;~MT{MV<4UCx zTMDws9pwaBmN{PJM3EsHj5lp#t<2b7d(DChJ>4}OY$6-@7PUN@!f~2-S_#2&GMOF2 zwpUFQNf}qx98O?)&a(WtwzWN+g@4_stL^2c9mr*&ho)Se)T7W|1C!kCPUI^RZ0m&Bx6!=`NyYqkz++$Q0!ViUV!m81(bjNBYT6SXcF zC?br!B62`7362k$wt-6C3BN*>fK}+47ogGWA`5J%STXC+7a%W$gPO=l(Xh;f4M||4 zAxUI}XoS~-Qa&PyB=id2_}|oV#3|12lYjcAc14=e7k8$B9Cqdi+GKcKG9?dI?{AR_ zn@_8WTzT!s+EUZ=?&gN>uGMQ-Z&TSZ02U6uxEEMx>E3@SH+O4;y3u(C73SY|blhD3 zeDd)-d*dUXZSLD;Ew?@z8GEx8JM#0_x9=;jXZzo;d}tBn`OAUzfaxu_J)J-L8(&|_ mY8U}fi7AzZCsS=07?=w)Ln2Bde0{8v^K*7iAWdWaj57fJ{tG z$}cUkRRX#c;)UD-UthSvdBxCx0tT6WMPh-zp`L+$ZZ61QVAaJXL8%C5U{zflQdy9y zACy|0Us{w5jE^*Bm}X$u;kO8+5a=2!|DsG_q$K9J;=_ z4N?;=6H|1JO%087Q_M_~buE*DEaNm2Lrddi3&RwHWSBYF^gEiExEPrmxf!`yIvN_f zT3A|Im|GY*yBeCB7?>D2yTJ5%<`tJD<|U`X?9K$*4b|(4SFe?GQEFmIeo;t%ehw@Z z1Z3ow2k+5@y%_rb2z@FPv}e0iWjU+Oxi1p!zv~iXs&*1|4~Or>FBBp z3I7}A&!0N;;!oMU!eg$7x8=sGPSJ{Q73m6SQ4(3m;i};zh{mjsSmj;Ie0o#O>${ux z?wG?=>R{V^wsGpr(_7t_%idaXeipOtrDw8l7M$IdIZL%$VyWHlw>@gk9J?3r)|}Ew zKcK)?`BsQiX-@Nm)pIA!^l*tvwpwy+f`?9nohrkjJkHP$R^0|VU;ifDT6sxnYrr2N zf5RKy^Q9KqwN98M*`<7^xhz&}x1!;Tjqz*musS8j6%w5(yn*Z3Mf)&5!RG(2SOZw(r@vA>6A#1E&FzI&We*}i<*KKvpUXO@ GgeCxto(X*b literal 0 HcmV?d00001 diff --git a/ora/gui/images/icons/design_09.png b/ora/gui/images/icons/design_09.png new file mode 100644 index 0000000000000000000000000000000000000000..84610e767707b2a6d3e675b0ed6d316215c10a60 GIT binary patch literal 1384 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 bSq}qwuBIdVEZ=(0{!GzaeO$`6geU(Spq?QJ literal 0 HcmV?d00001 diff --git a/ora/gui/images/tab_icons/1_selected.png b/ora/gui/images/tab_icons/1_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..201fbcb1761dcd76e33cb40c4079dc5ae21763ef GIT binary patch literal 2529 zcmbVOdpMN&9-qmzb`?iavP>gIHRfVw%#6!yW+*K~E*a!9W?sCFxtJM@Atti9CY_dY zZDnoBr9;%_5=A#Ul5I*hiEUNtFd-qFSJFA>d3yTeywCH#zwh_=`+UB)-}n1GZ>k$( zm)0tSRWKM#%V{^=9a^Q(8>p!ceNFDF?1z>O5(lQlLl7c~W{CjUPL3cLKsfPOp@2KU z;>1MU25ew3l?c$2DPg)eQ`iEY1#1ywA>|1nHVkG%l?qvGE+9b!1EC<_7CG8*6^Q^j zwn%S+3&urA1H!=FG7;b*V|cPi50J1BQeHS;Op)3mKiZ{0^5Qlc ziTDVSaBY!GK`~w25Hx`ZKoBg5C^i<4Ls*e5utW?Qhu?v~VX#(cj1?MdiNath7$U`z zjQI2*A#Wm12*sW5_{kTf*&@Rv5+MbRj*gDDh_MfOZGOf=Ce?x{nZ(WinK|uRB@zjU)mug&qNcO+u>W}C)uPP|gN z8{hT~x5VnkcqX6|$~mlFho^59qXk6WVp zsz&?lXjwzAHOi7ZJI6P>MumiS^`4q8oU$G6?BxGY=S%REKCo|5b=JW+w5)}DED2v% z*TQun@Lez{D9C3d*3LRO#HCXd=hfa8aPFkkQ8Cpql5e@i&UAExPrz8lB;{E}Q|VSp zZil~KOXa2m75VMeDWlp?kw$vP88X$I*N&&QnJXPDs&%Q_B}3^p1LxcPi!v_y$D!ay zXnDu2ZAWc4Hy6sUXBUl*A1ViBM@Wp8R>d}@#g5$etEpYAgO@HR$&)Jc+rb_B?Sd3n zCOE@bu{uf?@74$(d7A!ICn0(Ae0x@EpC;+#0h&xPbW%6LeBSTFZ$Fha!1ClOc}2#p zZ+(=k9a*Uft)gvrK*|fbG4Tg|t9WhW>u;U5yHvLqEV>*?h=v!G4eKaL^>e01>xwVk zpZIC7s$mMZ8y&jl4??J~qBEcA5Re=a9EAIX-B_#vdX__KdJ^UNVJ*D6fJk^`mtj^ z@%iWixwo6Z+Ip*wlYXhI1iy**tua!ITU?oopHvLu>-)T0o3#@fd&ySqp!)@hCipP( zQLKa&8C9b)KD6(=aq(X^BGTCktGfGT`-cKFxvhg-N>{vqVHJIFhOQr@SX(M2&9hKJRI*Q%>>d~ zTD^NU##Yu!)|`^lPG47q`A+&Y^w{led6wPpY!)lrDA{`66?^dhP_J3t zi(3n%bh-J8GR>37ptL1HUOx7s#{c%6=OWjRj$>VAj0ks|7qz@BpT-C(^GtzVtk;2> z{i{Z&PW=*E?>XBx>Q{VsK)f=pYFFTsg}LKH%(H$9jY@XUR1Nbx`%~^5B$FY(c5A3~ z+B{2l#B0^q!Si*D1D4PKxDiCfKh5g8qJ>U?{&%0Pkpw^tsx?# z{H%izz1k-I@4nyElpCB_R}w#9qxIQwdu9@C9i(9VTDgv2?OPE5h>FgIMc1s zap={`dlNQ6hpHmqj+edba&OcM(bUOlN_k?=qKe)ZC29o2v;Rd*r0Yg*dsJ#TjHQeJ zRQDklT#hdo2rtxqkR-_!Xk#~&b~kAmWELBK@BD1G@s)iOSzeXTHx<=o^Js-Jat3_` zro>9+!d%Mbe)aBq$thhAL5wL^m~*x};bD)k5T4giy)oPL9pRkwru5j(`&ZYzPTiy0 zfLUw*Sa#LuSfbi*wT=^ddjkzl%W}a4k9|Lyvm}M#c-P4ayPRVUQvOjAcm7xBZcBZlLi6&*r)Qq` zPfj;uPek{Kjhm@zQ`3gyrn(DC+dq*(|I-y;Q*&GwG%>K3qpC+P?7n5b_|xU&z@S&z H2POU+ZBQq& literal 0 HcmV?d00001 diff --git a/ora/gui/images/tab_icons/2_normal.png b/ora/gui/images/tab_icons/2_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..c2157fd52121badab403b7d015befff73b07fccf GIT binary patch literal 2897 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 literal 0 HcmV?d00001 diff --git a/ora/gui/images/tab_icons/3_normal.png b/ora/gui/images/tab_icons/3_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..87186e8760a40843010f954c544bade1c625ac82 GIT binary patch literal 3401 zcmbVPdpMM78=taLQ>abO))-+O<~)pdGV5ayIp#Qp7&GrMWM<3^MxtmDI&EmSbdn;4 z=zvT#v$R6U5|YD&lH{;SQs^6PcK7dQh3~~?@MEc55Mo1Thk!7rNNOnP2~z2CQH`J# z1R@v3^rrABt}a9xI}%A<#vlce92qwRVr4DhP-zh$9~J_JGFc?}l;}Pj#-x+re&()d zR}L8rV><5Rf?oUFylML)XaF5<{R7NOK$HoH1o>2$AaXB@M--6YU*r;Hp0VA`yAj}+TfuLdVSQr67Vl2=A7H&%nt;OK5NHe$Z9&8Vu&)g+ z)5fJUh@N&1Uv+SK$ARrYE;9zCJ8;>NurDqqGXFt69<*f8(O3e4 zMz^FP=pdef0H`=~1Qo}yz%xKR6$e_tzw*=nU)P~zMxmDD8-MAe;P| zM<7doa}781-)+q5A5CJqwz!k8lK$C*BkAJ)Q5$a4yk%S#F9NWJuHd8@w+R|Sg?4nAuFfJeQuB`@7411zmaN9vOP#B>AsrT<{PTOfnihi|;YSXxH` z1r=veaOI}^7rn&wOf3j-GH!8wvMeH{gGrC z3ufQj7+`QcfugM(wpbaug$SE8;Lh4~^-m#*)@a+>pbLOQqMB7rGR7hLs$+FNDtd}?NWkBUtk&z7uykYcEiXqXS^BKshTX2Ty_b6!oD z?5A+??BHSnmHzi+4lt zuD5HnKkYiq=(wtQ^UYmix1UQnozz>IxA>jzA=AuEiB^tW_nE{a;XeXVa2)C$ds_GBcDPS@5+rA>fvHe`PPrDUA!!_14+lC@2n31>d*4i z>I<9`6m2&!tfoi3E@^ypiMZE&SgTWGY3&k_y(4>j7o0NP=CX2gMJ@I_J zT92y3DWkb-ANfC-&1gYyPbyv6p1QwYP*dcMX-lx$BwY1mPUUW)6!5DS=R9bmJE^7p zl=6AK$~Oo+ynS{_b75-_Opm>)vbj1mm-c2gJ4Gw;>EUfY^D}BE2horLxtNQKZthto z{&z#l-kEbwUm6r`Z9M_i6mAtQY*{FXy7ESB=F_DWwd*nE7>(`np42eX#-AO3Vq+OU z@-|$h(j<9}yzdc)UtLp=-n@&jW3ORzg1gJFyQ(LevqcWhrR_Z}-eaShxn7U(#$CQ= zV-vrJTtk?gg$s2^ZJA*2#AEgS8E=O*@APXlxeNQ%QVZuE*@lK6d`NnNtn}6LaUY@SUF>QQptnJ8dHA^EYqs_yInXyis=q1TJ$n+C= zmR-b0oEN=X5Gz2YIzxSPebv=k`eya>ya|k*beh9?ZAsX?E&pdAqjW4)H(5-UPL-YC zG!t^P!Khk1pCs|!PbauCmAx+B$`PG6=q6q596N)4do=Z;lGsU3S7>xGH#Bmdu~uX& zf6_8y=A!Z0Dlu?y^F)O)>C%INg0P=`O0%*mRL*5}TkGynHaJ|DV~g0J@0^{rCCBUC zZh3~ycfq%gOXjaQ-`LUl!{)Vt;r0C`ebJ&?-tK-Q7o&pAAi8HkP~$HO25$p)P1(g| z`gi69NVV->lIK--buFO-4h&pMUd!v&O?|EaHA;Cdd|c3Edx$6r*)?-q5*n>tu*3b~ zZz4;iD6=()-dZZ~u-Q@~5Sn3HD_(g`KZvS!QynmhIM#CmYjD@QgZJ_wmoWYlRnH@b zt!8_$W+Ui&y5*Vq9=Mps_y%?j-G9Cff4-zjSQZ+k%2+?@QsZx1IaFnGJoi3o%1 zGmU7|?2M)Tv=eOAV&^k>`kSu&7iJjw<2dxO3A=Nx{j`dP#gBClt*fzt6CJZr&sOtl zCtnmUP3i8H%=X6g)hbP_ff}O=^FqokHr!X*G0omknLCw>jX8P?b?V38#!ZYh4SFcg z(vi{dZTb3>+gH8LYArJ!Cj2`4p4iJtAlTgNvg<=Q75WzsdO51~7vy>#*V>t{73-yu z8G%3Ys%wswznQ61}K_{QFULHR(Q- z4O@|&lY{I&0sA*r@dPbz`{eB_E)Dvpin2WWy3^F|_AxSYs|E!%p<({9?T3ne``;l0 zI6)5+520cX=6NjX3=*J(hCw63*_5ipb2|I*3!P(a-zuydL^QvQeoys}4|)FJ+n;N+ ziiOvq+_XT@>`omTwc%BzBE24}r~mL~6q)YFZE0cr9A>(irefrpQ3|!PQS0|~kjB(m zwVS%*uDgti>b_xE9FD+#D(rqHXVEm#-PpTc!`|!BJSAppk<+PYJpHm$ToP-x4@-8e zgj1Dp4bIbJy9qFY?hWDOKE$aKCumR52<&=mRne;9QnG{Q$pWXiOFsAWk#$E2O(~V? z%JmTuZrtbUoRT{YElt8f$B`v=^pVWh#+!q4O!=2n*7=Lor{1?ib(o)Iojw$mU&AnQ zPOK^0od3q^bIGyKwBqG>`LirpDOvuiTvke!ze9Ec3w{SzLF`OE20vo#c)t8|<7Dq< JS85xa{9iY(;zs}g literal 0 HcmV?d00001 diff --git a/ora/gui/images/tab_icons/3_selected.png b/ora/gui/images/tab_icons/3_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..0d128175cdb89bfdec1f3bdd9af40adc20ad3c1c GIT binary patch literal 3534 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 R6H@>H002ovPDHLkV1hmBBjEr5 literal 0 HcmV?d00001 diff --git a/ora/gui/images/widgets/button_save_onhover.png b/ora/gui/images/widgets/button_save_onhover.png new file mode 100644 index 0000000000000000000000000000000000000000..ec1a5de578a4b9b653104529d37c543fcbd1fa50 GIT binary patch literal 598 zcmV-c0;&CpP)%e>ReZy96C945{x2>7LiKB(bAs7 z(KeOVUVHCiz1(jM$>V;xckf+}u6+3EPenww>GwFH;8$eIW4kcB?UGNV-G=`T?16-~k7l0;Pif);#6{<%cCB(qt)3 zB@4(biHbc09!aL}J<`@yAPVa>i2Fyy6x217}zCcu*e&2fsIDeHbsV_~P z-kAso9+WD02|%q0)V}0;A1A%DDsZh>0LNi8rDHzZ{Ye*i1se4qcc3OtnRbFkx3tx8ws`E8T!J= zS5lu$gk#Q7eozyRifWsbdC6VTa>BObgl*?v2&a2;qpcT~20*rw-8C`zfbSD{ z0;Pgltn~R>rP)NOw#-iF!-DpHG4;rO%!i>Mgy&{6@XSaQ37h zpZqVL(3jgo-IIwvjkZkVSx-+ULB6$&x&Asc$-k)5lsIAAal*Fagl#8p!Xj_N$C(`B k{V`vVf5e~c-&L-@0c}ydFh5)dGynhq07*qoM6N<$g2e9>ZbT5&Mk5>vm(C)l5%dp8V`C6(Hn}7S7Qv(v3yGFinj(l*BBl{ZFxv=% zt+BST$zi842^{zXM6VEpTZ^5Q^Sn#Qq#m5*a;AI5GdmT67=o00yMCWJ4q?qZk>$Vyl@4Zs08>L#)9ZEoD91e!?VDs zpqkdA%6h!VZ4nC*Fs#Yr$s?$FZ8$qFbE=#_=$WJr3ZVHaq;sl2W#l zl(H!-Bf?@@i^f|8%2){w%b48{+(u}wNn|ChMdfCJ`|>TWVeX*t7Lnq(77BqOOa!01 z-NKt}zR*i+(NG-VF;?;4H9M#!rEE8_Vob#HAcE(Ig*REj8jUd$I`4WYP_RZ~oDQ9D zJrwvFp8f42xu+I4sh#Q}w>XtAF{+_+zJ~$@Ycs~{&>8RG+>I5ijaZ&)8<@u6VaaJN z8Vsxk)?;iT4f6|!6=-6lNh#YZZqYpI^6ItJEjg`4OMy`j%)iNQ8#Bn{nRK~J_-tUz z6xFS-|3Z-|Y~njE;UdoBEq?3;uGXW$YCT%Q^#H$}l(Hwqd~2XR!c}?Inv@ruRb0jZ zj)pc6#-0YB;#j7WQnuI(Jkn-SFXj1ZL0`6ZceSM=Knkbjek{6iJLE$471 k%zu^#=!X2ZeCVY92g|C9kPS9eQvd(}07*qoM6N<$g8sY`IRF3v literal 0 HcmV?d00001 diff --git a/ora/gui/images/widgets/radiobox_normal_f.png b/ora/gui/images/widgets/radiobox_normal_f.png new file mode 100644 index 0000000000000000000000000000000000000000..5bb7ea9e49697d4ba2cebec7f064578de54207ce GIT binary patch literal 685 zcmeAS@N?(olHy`uVBq!ia0vp^{2-n*TA>HIW;5GqpB!1xXLdi zxhgx^GDXSWj?1RP3TQxXYDuC(MQ%=Bu~mhw64+cTAR8pCucQE0Qj%?}lpi<;HsXMd|v6mX?lFz(U>^(@_FqejxxtSPQRJEzDUqAVrk2gDc$u4Iz_4#Vq~|SnEyck zz`>gb=ZO@R6qE`UU7EIOQi^v`(Cqm3_ce=q-`Gu`Y4>?gy4_iu%SIcvEb}`(iN_M+5-yetSluf+ zmS1mPsa5#b?w7OKwyV8-SN<^sUp44*7hx7Fkl^lJA@%n&qwQ_;LWXj6ekF1>%6Uk_A8o=m%blhuvKD zq^|M7)4+M4L*N-;r-VyPOV|9QQ>>1v(tdYPFTcZO0uePL~G0 zek+suB|9_&IG#u}kz9>Ad53@w4QvGV2=8@2{K(jm7TZ0M&l@r zqbzKtp`qcy2X^fkSigPq2B1#7m=Kl*_GnBJ0et4SzHGbuE85!XAaG>~+z8p2zG_-^ z|Ko2YUINyzm@^(LrhzTeIqMgwXx-_E#kPPwFTB33EF3hA_ucyxunwrNVr|hf0dT`F z;97xg3vizow$BSk!~%CUZvvWq0@vjos+GwA*gi-tFBZov92W;@;NN)#vJsxzTK~lD za^+Y5hAxK3S|T_*S)8cidQmB8;DU6v`&Z1)lm@CpQ5}14KMErkzsFo7b`|Tq22M$5 zw_o6!caNv%=k4D-V6E6YN^@(fnEUy_+b4i2pj5>g)R?Qb0z3<}cml&8e>;8V^V9LU z+0ySOMAnkn-?~}M{rE!i&C>PByo9wm0jh`O%`)kPoFz6xa*borpLxFVJ^IzfE{X!^#KoK3eiVi z!HLLTG+{0~?>S)sNVvS1u|26!~o z77G_fhE58|k=Pb}z-#i{ka0VjNcIWb1)htC-5&rv0Wei;3V2dPHiz0`!-bKdY5Axu zR?o>ZFII1muskp8UL8&MeAwRJ4lGTK_r;S>F;{M9G?C0;D%LrmAnQWFHcZXlCu2n* zF`Dkl_<<`G{X+s+Hru6DfGp5mtLQIDZD~17A@64KZ%Zq%Ugoc14#gmljfdS!%c=hZ XO5Tp%#B)nG00000NkvXXu0mjf)!*`^ literal 0 HcmV?d00001 diff --git a/ora/gui/images/widgets/radiobox_selected_f.png b/ora/gui/images/widgets/radiobox_selected_f.png new file mode 100644 index 0000000000000000000000000000000000000000..7fea8009fb9de66e0f9e284bf19e3a98142c1596 GIT binary patch literal 1118 zcmeAS@N?(olHy`uVBq!ia0vp^{2-n*TA>HIW;5GqpB!1xXLdi zxhgx^GDXSWj?1RP3TQxXYDuC(MQ%=Bu~mhw64+cTAR8pCucQE0Qj%?}lpi<;HsXMd|v6mX?tk{L74ZOLEu ze&6?JyEX_Nx;baFMf!KytJ}-v&0m-%Fx+6vSim@kaUavY{rfboKiv})lVx`I-_N3; zS^7uMhkIXKmvxcv=tgt(W7Yf`472~q&q%$maOh{%g*o4Bw&opA)>c1yJwp9~B-e6v zJ5BM+cUR^dznG%=L-e^BQ!-n?frkYr&qlre)X$&xb{o5Ki1OuhUn_O(P2uTvzus-% zZ}+#Z=q>Z^&pZG9KE8NCnZygh1P{$!uN*($YqXX9w(srQnKN%baaeli&)%S}I-M{n z@lWS%toHmm7nAqx#&t8UtnV6YcQ+_9&Wq04adDn?Q24uD*1k($eN(?xt$9r@Ec4aZ z8RynUf3x}XFq-{HLYlwa%+E$Q10O^({%UT05>Qvnz4mR~`$bpv-I6$_Dh9O$@EqN_ zdd6B0d0)oBZzH&qMbM_p+^!+j{03+k>V{_ezZU%42>$ zZ9iGHv8RYHaKbK2@9gyO^y>T5gbQmoa_?}HI3Tg%rs~D*Nq-K#?dPd$4vJ?mRbaNc z+w;aj=E|~$e^39JZe#q%aBa6r-Q6&6f2R5R`?VPTnDX!aSXIw>?Voby`byn$P_f|Y L>gTe~DWM4f?+D+; literal 0 HcmV?d00001 diff --git a/ora/gui/images/widgets/switch_off.png b/ora/gui/images/widgets/switch_off.png new file mode 100644 index 0000000000000000000000000000000000000000..c24ff6bcb3d3e339fd964d7e5c9b77ecb2a71697 GIT binary patch literal 2146 zcmV-o2%YzdP)qb-l91xss8ptJ=Ftx_norKLC&?Q`Dubsl^B;m(tp=?sPPPj2qn=j_M& z?X}N3doQupawaYR!OdckMOIh}vcMqC7HTZw0T=`;V39$;-tq|dja2^WE2Ap)rN5nT zq1}ocvdB&gPg&%73l;<;eQhiCZ!A|;dK(So#}v>V~LC<3M0Z&Ku{_ZSgUZnWYPsa?`>VMC2of=#vE=?|zei6kGd2`aNPH z>Vt|5VPqH0NW5=+nH^WNNH8zRDsf*TG38adTC8xvFL-lUnR3t*(j1JuaVl`59mCw$66` zeQ+;@Qi0hsE@jHZ$^Flcp7<}tQjxxoSzT2PxvCltw!S^2kMrs$lZXwEf`Ty5oyg|! zJs3}b5kXvylS<%LX9@GAYaGXQu5gns%?;B>ZTIw!XIQ`M2`)K*7O8le^&9@i!p2YY zm1}Mx5sR~a+mq}*`4(tR;D>y9&b2I?e-(E>c|UF{i2;IAz|XJ$Ces_6MjT_NTf^VW z?}9VF@0BQpa$R&Pfs;+ocN|Yo(~e6+Rl|r4UO&8#zZ}@icW%6kOB*i+pk@Ab+`IMH zJpIyERxDmdqAtso7cAz^*~^Ett!Ghvr z+LR`|RD%5-M+v%1MCFhL&6kqPR*yJN)`?+)5SRZQz0=w#4Cxub~RQ)Kqk84T}fKsJg#07Wm0)+pD- zQChW&R`osQ9;%bWXKQ+WGk-m>m6Bf~?hU-Cdyej7T3@IZXv#Ej`$g9c9YloBPMXD) zQ$97OL7jdPYtDS67?}jns$Gf5TS_U8bsQV9-sKm}Bb&@{|5LwW?^~~P=-tCSxcLwK zr*xbfW_%t1YYai5JgjXL1cXI@T=u-vb?SpdP?;=I>YxH%5G5Qsc5uXsaW}?ym)yn7 z^Jnn8S2pmYt-m0VOY!|hck;>F#tMi9W&&`^b&O%LBh%KOhP1LeqCg6_f+Wg@c;YY%saUF>6qG({`+>@Gy6@SIY--&@vOb4bok2PJ zgLL6rV^*3V*xz?!$eCS4)VDT%`}$ZW@ksaSo@AUPE9QNPdChY^l4xeFW!u|(`RyxP z=ujbv$#o*z3qe^ze z*#2ai8I)NxgHCgm?4hb8^t3`e4;_!;)ntg(R^wG?ka!HM^l-z6gB&)9b3X8-^I literal 0 HcmV?d00001 diff --git a/ora/gui/images/widgets/switch_off_f.png b/ora/gui/images/widgets/switch_off_f.png new file mode 100644 index 0000000000000000000000000000000000000000..2450c4a04bd85994695e42b8b264f52c03e8d246 GIT binary patch literal 1997 zcmV;;2Qv7HP)jeH zXlY1#a%EF`PE=!hYhyWNB0oL~Ja{^IZE$U6bYUQPZES9HI(R)IVPtP&WjbziI&Eci zVJ{*ecsh7(aCB=uB0*$tVr3v$O;8|1Z*pZIH7+(SV=*&0AU8QKF*P|jGBhk8GB7bV zFEBYTF*GeOF*-0gIxsOHARr(hARr(jJ_;Z_a%5&YQba}|cx`NMb2@TlW<4TkbaZe! zFE4j@cP@7`E^l&YFEKeeIWI6WFETPMa%5&Lb9rubVR$WWb0Z=?3Lqdna%5&YL}hbh za%pgMX>V>Ia%5&YVPbD}bUh*>FFpz&JTG!&W;#+tMm`EWFL*k5ZE$U6bYVUUJU@7F zVPk7$bRcDJWIZBsB0oMLNv=8o00uotL_t(YiLIAwY#dh=$A9O}V`ta9_S(DN_4<*< zY2&1col@LDC`oW4N@z$$BUBP-Bt!*B2o)-zst_L#pNfD_NC=_!8??|CHI1OCLL>o1 z4NXv6k~TEhG|Iz{?Kr!Bt#@~J=3YLm&OIZCzxNOT2Dy2O zprNN+^&c$yr9Hk5HwK2d5m6d38bPBlA{fAkfU>ZZL(GZdI4&S)sM#TC5iy81!i<4I zjhr;dQINA*3D^!;7Dg!$!Db1Jp`#M`KbozU4`tF>c5T>6wlRz6dLXJsWG)ay00@B@ zzs&X0G;fVwqvuDOH z{<66_+xmr%JixB*d&$%{FXg@_^5q%+HhP|yhR!ftnZmOo2#QctO+f=eV5nAn{9+k@ zs(8qsp4}Bxst=1Yf0DVtrM8tqsLiLQ{h8;t+|d(z?BJtxq}p$Z&{9n5GC#j|iqqvW zV#))t&_HM)&=6EZ{8EL=M3M4%f!WdgY_(YWESB{$mW9>bw-pR`l)}={p3QePefRKp z$Tno&7byTwY_`YS8Ils0WER(rAdZ9BHbh*M7s0NJVkKf&by38z9TS9mf|7p>L*DA? z+e+00KgqPT-21K1e3NWL_I;DO0Sm<@yNNU9F$%hZ#ey6a0n0*M2P+yy#iEF1C&IFy z)}SrypHVWRW#D8 z0u$Wdo@-4 zxn?4%#{2D1g?qbi-$qMAZkhdW{(6ja!{_mwCpQJ z+^0ZJMX3Z;WbuYB5&}R)T%3kPm$E%O9*abm7#ZHa_6{HWz)sqmT5*-lL)#Bfux7b9 zb(OYUD?{b$^q+s7sr&@lbcQhQ(Esik28J)L=r@8*5C-!_c{OrkDXeHDZaa=s2~4mg zLLrezFj1VGAG$uB$JmOxSRHyiq_e4wJG~C->y!ACRhqp9K9ubt6^XCt(+_+^*VJ1n z4{tJ4h+|i5*KsdSmL``Ku1{>)%hRtu!_ofVlCDc};_@kWcJ;D8*~-;7NBD5Ao6Wfm z09>2N6RRrjY2UP}zmei3jeGv6n-eJ>+4;FeV~*u;u>0eS#&)-DThq(G@%zI#Fg7EjMGFv(6+U|)H z11BiVOuVOXZUvP}g+(`qfj456t8Pbx=+*6idg=l*=|-OgABjFN%G0B z??0UBY5Sq$cpVLu1l_G$XlraC>PF`~gPI@=T`b?>|T$Zb2i9w=4)UOxz8 z)lknbJh$LnS6X`(+s28-s7o~w&!$n9jq@osVQ$#1MGU~Q zEz+IYsO37Ffiw`A&)d155D?7V7J(SCRUk;!PSgeao_fN>a?O;>RWxcLu}Ua1rcswQ fgyCFZONsp#WZAO_W>cpM00000NkvXXu0mjf9fO=e literal 0 HcmV?d00001 diff --git a/ora/gui/images/widgets/switch_on.png b/ora/gui/images/widgets/switch_on.png new file mode 100644 index 0000000000000000000000000000000000000000..c0f61330d47add4ce891396c62add78da5628b8d GIT binary patch literal 2216 zcmV;Z2v_%sP)4aF~U@1a0Atgd7kP@T- zDf<<)3{qGOk|T!nA+WvV`ZwWp^8o7{)`3eLiM4y3b@w^P^6g6>v1dbMii1C+>i8eY#CO38lEgkzyx@ zyW81%sD)Sd{f7g`j*wJhY&Cv8N$kx#e*Dn>(GXeagm_wNRZzac1U@F^W1;{P`Y7K+ zcp7Alj79Xii@+kN3$lE9($&l#hJ)|)>tw5>)mk>1)7e^DhdF(a#(tKnBLs3eq zJh<~!{_)m!DjnUGxKzGz#~t^-)JJ5nt*1*RS16-BKNFJ5rHKkzf?R}21*pJ78jX_* zCnZ)05CayO8%^g6b+ZwCbSs<=p)&k@_H{I5>iFZ%O~)(r83qm>pyR*L%2~ zgU{zKXIxPDglN=YgrpFr*;qV`wRT3~+AAKDLW%|2(@jApAYGp(%BS%oAF0(DtjIOn*;pE&Asajdf!0GO^&MzEMDu(5hm1eL+e6w0Lm>EU-36Fj22+>4L29F~@*|%x6XK_Q zjAsyXWaV69ndCK&ip0u|ukekh?qThRyLh{&m2a|9bq!JcYtE9)0swCXE@(1!K-fMFE)$Ck!il zvY$mriH^dHr1o^)4?T=;P-bM8>L(J%L?#?@+=h2|GJW!e{UiX!Wg7V0^x3?4csBqt z^jR=v2GgfC@$klHDOJh{qcPcNSlK!4g990Od8xEQ`xh9!SA=M0X0fpoI@IeluEWKtq|(Wcg1PvTSr&9IO4dO zjg#4Ycps%o&q?jC9c<>({PWNAThXWzIQk89N5ppFa3$;@-c3mc6I+aSBU|bH@1mI zlP_b7?m~Iqu(JQ#c^rX2NcoNgHl3aNH3%taK6>Wx*oVOQ{A&Jpm@(xd9@_dWcdl86 z*O1}SE5F6m`f&pT-GH0kJb4Z?!+L~P!^+-z{9r9zf=%KFPu~8S!o)FabB%fYOxT~A zyCLcM(D!0z3HM=zdlr80tX%Trf_09sZ(6~Lv2{2h7fPGhbxEA;b&18f(FEQal-6{L z68~=5aSqizGgcpH=7>xXO6?=D>tzxrE-uIS$JH2X?Z^^(p^U!IWB9z2W2NX?}CpSJ_iyof<9B|*} zmuT}q1>W|y%{zY!Amd6xrBqJJ#quq2Iqq`FD2WJx34Nl5EZdIn;dh%>o|S9~1JVGF~#sa$! z>}Aiv7UoQviBTgL8O|1^YK40@Jje5g_YjU7Q*}ZtUOoG!^?m))CYDN1mG1T;-R<2k zmW$=DByrL;n%xybpnXHSkRv;`fn9Aa+_B;THtgN@v02AD$1D4GvG|!MSaYlezppBg&?s| zDaRB$igX?8q}1L`rBorVCM1c)I%);CzQ0Qb-UkYG;DoHz%#=cS1{wIMbn5-MQhj9W z9S=Owx#zuNABn+4G}Q8@q?%CbDnYN3N#bm1-7+r~ESJX2cUpc4A+7?Z0(s!1{6R>8 z2|OatpraIFSBakP9?IQis+E`|sZ|d9Dvblx#ld92B4UK>u<*XMZcESc_7}E)|GqV) zgGai6xW@m~3%LJOI%|n5F{RED)wdv zbRbdU>&`VfLQD0V@2|)A^LTuY_viC^JYSF3`=3wpDSK;iQ6*6T03dFIwRGg~ zn*8~Ph%kSxwB`x|0DEjH&aO09I~cH4F5p>I{~8=?3fYA5UC5(M;gHqe}dq8 zFaxL_5(-1;=)q8WNR%E7^m~9!L_x=cy?s!QmM4Cj@hdc#Orr&&pinxUu1i0rOAYpg z!jMQLR1Xe?!*%!yosh5qnioSSAms2a;{OawQV21a5=f&^13F9J1`h6aP7yC%@z zF8p}V|MKyR|2jkp;I}21pC4pXg#rMCeQhkwow3R6o98Y9edW5M$4NeyHd##yU6&?@ zpDVt%0jX;QI2Ec}omQSHJgxrWs;m?i`^C{LE{^wxC2v+ETaJ(62qKC~9A!$R9Mv=+ z>^o+5X32*#OYP%`@2i#1KiRCJ)0@9BTtAjChe{!$DTrqwueMC*jOTh4t5+QWJ$Ox1+q|^ zDR!yXn&oMsXMj(Ws!oZ%kvJ01l)h^A1TfSuG7;kVqN~^i+hv6k%@%;{kLM8fXW$YO z%J1Tc6|qlw`h%Q)Mvvg0OPwA`F^Y+4;@!-Y^0w|(W}d41$cSOYRHDPiirm6w0iH<@ z1`4V@;3awVjA32#^_!`anvpAfNRlDrl}jo~BWyADFtLR3E{*Y)tZCk85MPi!rCD@8De;|>ww&;b zcn!Crw55k1+u(9P3Pf})sZqIQ_D!$K56rEv61MNZ;T<_yXuur>utF`m|ITn#&#J&X z4Y=FZtJ(h9AO@YdhnAm5iLh_65}r;gH8<|8bBedBv3rVhMU3ybJ@?eg^LzgGuL=c~ zHh6^r_o5)={Kn+ZO&liS_N-fGD5a4hJ3+3z;d(&rRL!2VOv3p~U5C{4Q|=F5bZ^ca zD5>U54?3smO{gW49!#P3NskESFwbVzLfpqO*jRDQBPQYx5gfS=8YK@o)IcousUEX? z+(J6gc5O+XsXB7BB(vd1F}~i!u1GU>3JGxan}Y}|To{DA-Fpzw(CVy)AO9+;*Et$a zUS`ANPi`+;*bQfR*bH1_-mu{grO%BPyx?Gcr0b$e2IbAo+OmhI*&0E2yiGT+OQfGS z!N8?`9~)UBj^PIBH;}Wg-aYnqI-QsZ51UHP=hw2=np%YDE!7a4N zGL74*6CLPm)@k%XkskA8rMyae;OC|J$y!_L6Y6)&j_2z$!=wG3DbeV54o9d1clC^> zZs7D11n`s8IqzFvktb|;LSg+}&0@nUwijcZ629D+wAVc5FpD)0tmn*rr3YnT9sXIU8%)=|@Y=j$gsdZxBgJ&_ zIC_(%&ayAPb!2vq+qH%)g?VQ}5;{+inG}^@8xm1L?5vmH9Dok!4J#SYp}(>ndpt^} z8((Af$%TsfO6S&oT+vy^$*%9Lu`!J!pSoY8JcvYpndMr)`9rGHykWhMtcRtM{>oZc z3K#qoU!GD+EX(!SpIa}kde_mpd2w~@b4&M3Sw)X`qY-|b4lq=i*=`Mc`f#lEnc<4C z=ebX)p|Sd;MCagO2kK2yUcq ztmTl;oi49iTz{t{sT1BzkNiGb3q{}!s1GZ~k*HQVr@Jm?Kh^!o_-xUVsZNE;m$Mj32 zuLRBZgq;XTeH8jG;bcdYSauI7f7z%#*;x^t|0`;XUJy-LqWU^)as90u`0D% z`?ilDVZWBXIn=05e98~WZHma?F<2i+DKg($z%?}Yrq+SHuFt)3%^8(pDyzeQI zy#+FAui>R^Oy6_qw!X2cA~k~Zn@(!g5mh-<1RHyR`> zeQXgZP>ARWT~D9NQ#5}2HL;Dj0tALV`_5~R(FL-#k%tu|1=qFJrXOY?1ZrdGwy!2F zfon2h5|LAT9eU+z_G*b$3Tw9`QwXK~zC|vOsv;|~#F@2@QRYtzSBVPlMl@jjOJI@r TKZv)x|Fw;ky=9e!XWah)W!|lU literal 0 HcmV?d00001 diff --git a/ora/gui/images/widgets/video_container.png b/ora/gui/images/widgets/video_container.png new file mode 100644 index 0000000000000000000000000000000000000000..4d80d7d7c6f3b5aa70a1f7258ec83f5bc14363ab GIT binary patch literal 1750 zcmbVNc~BEq7++;XhJhaA5u#w$rM0!1Y<6?*Vv3RwWiaSKI#6q^OLie^NH*DQ4njx8 zV}u%Ypsj63rE|WEJiLt} zaKDOR(;)*+<(U@3dX8scl}s(QU`ia;5Hd_HCvfFV7?)!jRIWiWg;b7_ay6+S;K2_8 z)_A&r%r+PYZGn{zu?m8dL{Xp5C-W&}9AAiH1VNy39K~@d(2%-|9RlT-I^4+-1_R@^ z@T^l{IR_kOr1CkBphJMC10mR*Cew3bhkGzlAZ4hZa-x__j@s?vxcar-LN+tx#)#T( zbFq^_vl%z%;Vs}k3X&sWkh>Qf3M&F{$OSwLE`=&Ga2Ai9aR?a(9Rf~dG)t2-BWEar zqNNHIhD&L+(jp}+V5TTgVuZq?#b~)D!ZQ+HX;diGYNZiRC-fMWu1!l%(;8Hm3RfGj zGy=yX*bIkTpd1z^Vw(lF2eIid#FBcRp#+XMb6ioR3Km*9fpc3qC#=`QZ|1TNn)A7* zhi_;gU<1RmUWPXEoE`2@G0Bc#zJQTqY6XQ$m0C3+RntmLs#Pg*DW=uPDTOj$qr^ez z19kW}^DY33=Y7ODK=bgROFlYeodQ9l|H&}SG5b4vJGo^S z8@u-L+=EFN%YtY8y@V)6|b(z>iyO%yKPSKCOoNoR6IKr&yHRtsr>s7SK_!k zu9tQ~hUjPek6cakt7Kc78ta@l+uFY3W2$wcq>@cBV#3|Jly_mD}!IpW6L+Pa@ZPqo+&g zY^XHN2(_kOZflpcj$N*)?R9VmpZ@-^(b$(*AAFQ;b&WY(ErAwqoOyEb_8kWRQB`@| z`Q()LJzav`d-wX4sf$0pcutyJ*IQqI=F%6ZZ52PY#pQX&c~`F6fA!V&`#TdR)h#bS zz)r}#`DFEt?Zle(HL){aZ@RV8cCv48L**#RJQ~Jd5r?HLE-Z%Vh#*mhXe6p)6p+%E z`J+bI9yo%)@oah}5EzfhaK<6lVT}KU4#8gp9p=!G)iCr<>R%I=tVlTiTkmXZ7l%yV zQo*0Pd}8{EKzpXP#;E?pCA*d>-uBBu^jdx6@%l<#fbB9LbBh-+k9Ti~Q&jCSs>gU^ zC4ra^Uc(2Tk;w(Hl1X?4q|)opJHx#;fBA8P}>g=v}ZA?r(%nnm~fbR8e=JKIy6 zvyTZ@*%zH`D40;Pt9C)3S4CEQ*WS|k{-v`AsyoKND@j`xl~NW=ntOgpR-dOQw65jM z<`zEQ7AKh)HBMZzq3G7JE8|1OJziJCw8_o)LYmU@pl+^ut$NMD&Xk}icQ1CNIA+F{ zqgS3ZcUP6$JcqTSoRTls9NQRW+mzYO-u$NQu1IpI{N>L#$#%q_K7J|xo_^`WyrwY; Y&>Jn?N~%d*5`Jki(z6UTX-ilA3nzAp0ssI2 literal 0 HcmV?d00001 diff --git a/ora/gui/main.ui b/ora/gui/main.ui index 2b17356..c0ab01e 100644 --- a/ora/gui/main.ui +++ b/ora/gui/main.ui @@ -6,8 +6,8 @@ 0 0 - 1100 - 787 + 1089 + 789 @@ -17,10 +17,10 @@ - 124 + 118 90 - 967 - 691 + 973 + 701 @@ -53,6 +53,9 @@ video_listwidget + + QFrame::Plain + 30 @@ -343,9 +346,9 @@ 886 - 126 - 16 - 16 + 122 + 63 + 31 @@ -551,7 +554,7 @@ 700 200 271 - 491 + 483 @@ -567,12 +570,15 @@ 4 644 697 - 47 + 49 + + true + @@ -614,9 +620,9 @@ - 8 + -2 8 - 545 + 555 31 @@ -887,9 +893,9 @@ -1 - 2 + -2 123 - 783 + 791 @@ -937,23 +943,9 @@ - - - - 114 - 0 - 16 - 761 - - - - - - top_group left_group main_stackedwidget - left_shadow_label diff --git a/ora/gui/mixin.py b/ora/gui/mixin.py index 75fbf7a..e5db1bc 100644 --- a/ora/gui/mixin.py +++ b/ora/gui/mixin.py @@ -2,11 +2,14 @@ from PyQt5.QtCore import Qt -class MousePressChangeBackgroundMixin(object): +class MousePressChangeBackgroundMixin(QtWidgets.QWidget): def __init__(self): super(MousePressChangeBackgroundMixin, self).__init__() self.setMouseTracking(True) + def enterEvent(self, QMouseEvent): + pass + def mouseMoveEvent(self, QMouseEvent): pass diff --git a/ora/gui/preview.png b/ora/gui/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..f5b9a9660b3498a488db2e8c756d3afa66fa06f6 GIT binary patch literal 235069 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�K&snL2g*W4iQHJC$)wI4VgtB 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

3POk{-R^hvpId^@%*{J)q^)g|>VT-PnRS?_0 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ℑ+_5Y8|nwc;tbJs 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 literal 0 HcmV?d00001 diff --git a/ora/gui/style.py b/ora/gui/style.py index e6b2cb9..1f4e621 100644 --- a/ora/gui/style.py +++ b/ora/gui/style.py @@ -7,7 +7,7 @@ 'team_title_group': 'column_title_bg.png', 'video_setting_group': 'right_bg.png', 'team_setting_group': 'right_bg.png', - 'left_shadow_label': 'left_bg_shadow.png', + #'left_shadow_label': 'left_bg_shadow.png', 'video_listwidget': '' } diff --git a/ora/gui/style.qss b/ora/gui/style.qss index 7ae7f6c..7aeebe8 100644 --- a/ora/gui/style.qss +++ b/ora/gui/style.qss @@ -8,8 +8,28 @@ QStackedWidget { QLabel { color: rgb(201, 216, 229); } +QGroupBox { + border: None; +} QPushButton { + border: None; +} +#publish_box::indicator:checked { + image: url(./images/widgets/switch_on_f.png); +} +#publish_box::indicator:unchecked { + image: url(./images/widgets/switch_off_f.png); +} +QRadioButton::indicator:unchecked{ + image: url(./images/widgets/radiobox_normal_f.png); +} +QRadioButton::indicator:checked{ + image: url(./images/widgets/radiobox_selected_f.png); +} + +#analyze_button { + border-style: solid; border-width: 2px; border-color: rgb(37, 173, 231); color: rgb(37, 173, 231); -} \ No newline at end of file +} diff --git a/ora/gui/widget.py b/ora/gui/widget.py index 5b1fea9..3505ffa 100644 --- a/ora/gui/widget.py +++ b/ora/gui/widget.py @@ -18,12 +18,12 @@ def __init__(self, parent=None): super(StackedWidget, self).__init__(parent) -class VideoItem(QtWidgets.QWidget, MousePressChangeBackgroundMixin): +class VideoItem(MousePressChangeBackgroundMixin): def __init__(self, parent=None, up_left_str='', up_right_str='', down_left_str='', down_right_str='', icon_path=''): - super(VideoItem, self).__init__(parent) + super(VideoItem, self).__init__() self.textUpLayout = QtWidgets.QHBoxLayout() - self.textUpLeftLabel = QtWidgets.QLabel() + self.textUpLeftLabel = FullLabel() self.textUpRightLabel = QtWidgets.QLabel() self.textUpLayout.addWidget(self.textUpLeftLabel) self.textUpLayout.addWidget(self.textUpRightLabel) @@ -47,6 +47,8 @@ def __init__(self, parent=None, up_left_str='', up_right_str='', down_left_str=' self.iconQLabel.setFixedSize(200, 110) self.allQHBoxLayout.addWidget(self.iconQLabel, 0) self.allQHBoxLayout.addLayout(self.allTextLayout, 1) + self.allQHBoxLayout.setSpacing(0) + self.allQHBoxLayout.setContentsMargins(0, 0, 0, 0) self.setLayout(self.allQHBoxLayout) @@ -58,6 +60,8 @@ def __init__(self, parent=None, up_left_str='', up_right_str='', down_left_str=' self.setLabelText(self.textDownLabelTeam2, "TEAM 2") self.setLabelText(self.textDownRightLabel, down_right_str) + self.setStyleSheet('border: None') + if icon_path: # self.setIcon(icon_path) self.iconQLabel.setPixmap(QtGui.QPixmap(icon_path)) @@ -95,6 +99,7 @@ def __init__(self, parent=None, text='', img_path=''): self.layout = QtWidgets.QVBoxLayout() self.layout.addWidget(self.iconLabel) self.layout.addWidget(self.textLabel) + self.layout.setContentsMargins(0, 0, 0, 0) self.setLayout(self.layout) @@ -107,6 +112,7 @@ def __init__(self, parent=None, normal_img='', selected_img=''): self.label.setPixmap(QtGui.QPixmap(normal_img)) self.layout = QtWidgets.QGridLayout() self.layout.addWidget(self.label) + self.layout.setContentsMargins(0, 0, 0, 0) self.setLayout(self.layout) def to_selected_img(self): @@ -158,6 +164,14 @@ def __init__(self): super(CheckButton, self).__init__() +class FullLabel(QtWidgets.QLabel): + def __init__(self): + super(FullLabel, self).__init__() + + def enterEvent(self, QEvent): + QEvent.accept() + + def click_button(): button = ClickButton() From 4de1e18e7bf7b8278e38474b8c109294e30bfb04 Mon Sep 17 00:00:00 2001 From: chroming Date: Tue, 15 May 2018 00:03:49 +0800 Subject: [PATCH 15/57] update gui --- ora/gui/gui_.py | 8 ------ ora/gui/main.ui | 72 +++++++++++++++++++++++++++-------------------- ora/gui/mixin.py | 10 +++++-- ora/gui/style.py | 8 +----- ora/gui/style.qss | 14 ++++++++- ora/gui/widget.py | 12 ++++---- 6 files changed, 71 insertions(+), 53 deletions(-) diff --git a/ora/gui/gui_.py b/ora/gui/gui_.py index cd53ba5..3f20839 100644 --- a/ora/gui/gui_.py +++ b/ora/gui/gui_.py @@ -63,14 +63,6 @@ def _set_style(self): for label in get_qclass_child_widgets(self.stackedWidgetPage1, QtWidgets.QLineEdit): pass - - - - - #for wi, ics in hover_icons.items(): - # self._set_hover_icon(getattr(self, wi), *ics) - - class MainUi(QtWidgets.QMainWindow, BeautiUi): def __init__(self): super(MainUi, self).__init__() diff --git a/ora/gui/main.ui b/ora/gui/main.ui index c0ab01e..b1d4de1 100644 --- a/ora/gui/main.ui +++ b/ora/gui/main.ui @@ -39,9 +39,9 @@ - 4 + 0 0 - 695 + 699 645 @@ -466,9 +466,9 @@ - 2 + 12 -2 - 265 + 255 35 @@ -532,9 +532,9 @@ - 2 + 12 4 - 217 + 207 37 @@ -582,24 +582,24 @@ - 608 - 6 - 87 - 35 + 610 + 14 + 80 + 28 analyze_button - ANALYZE + - 552 - 8 + 564 + 12 39 31 @@ -610,18 +610,21 @@ false + + + - true + false - -2 - 8 + 10 + 12 555 31 @@ -633,9 +636,9 @@ false - path_lineedit save_button analyze_button + path_lineedit team_setting_group team_title_group @@ -771,9 +774,9 @@ - 120 + 118 0 - 971 + 973 91 @@ -786,10 +789,10 @@ - 10 + 2 0 - 75 - 71 + 83 + 89 @@ -807,10 +810,10 @@ - 690 + 700 2 65 - 69 + 85 @@ -818,9 +821,18 @@ 20 + + false + + + false + + + false + true @@ -828,10 +840,10 @@ - 758 + 764 2 65 - 71 + 83 @@ -852,7 +864,7 @@ 828 2 71 - 75 + 85 @@ -873,7 +885,7 @@ 900 4 65 - 73 + 81 @@ -929,9 +941,9 @@ - 6 + 4 90 - 115 + 117 669 diff --git a/ora/gui/mixin.py b/ora/gui/mixin.py index e5db1bc..b56841a 100644 --- a/ora/gui/mixin.py +++ b/ora/gui/mixin.py @@ -1,6 +1,10 @@ +from functools import partial + from PyQt5 import QtWidgets from PyQt5.QtCore import Qt +from functions import set_background_color + class MousePressChangeBackgroundMixin(QtWidgets.QWidget): def __init__(self): @@ -44,14 +48,16 @@ def mouseReleaseEvent(self, QMouseEvent): class ControlButtonMixin(QtWidgets.QWidget): - def __init__(self, ): + def __init__(self): super(ControlButtonMixin, self).__init__() - def set_control_button(self, min_button, max_button, exit_button, max_icon='', resize_icon=''): + def set_control_button(self, min_button, max_button, exit_button, max_icon='', resize_icon='', bg_color='#000000'): self.max_button = max_button self.max_icon = max_icon self.resize_icon = resize_icon + # map(partial(set_background_color, color=bg_color), [min_button, max_button, exit_button]) + min_button.clicked.connect(self.showMinimized) max_button.clicked.connect(self._max_button_clicked) exit_button.clicked.connect(self.close) diff --git a/ora/gui/style.py b/ora/gui/style.py index 1f4e621..85732c0 100644 --- a/ora/gui/style.py +++ b/ora/gui/style.py @@ -2,7 +2,7 @@ background_imgs = { 'left_group': 'left_bg.png', 'top_group': 'top_bg.png', - 'analyze_group': 'analyze_bg.png', + #'analyze_group': 'analyze_bg.png', 'video_title_group': 'column_title_bg.png', 'team_title_group': 'column_title_bg.png', 'video_setting_group': 'right_bg.png', @@ -22,12 +22,6 @@ 'max_button': 'design_08', 'close_button': 'design_09' } - -hover_icons = { - 'analyze_button':['button_analyze.png', 'button_analyze_onhover.png'], - 'save_button': ['button_save.png', 'button_save_onhover.png'] -} - text_colors = { 'textUpLeftLabel': '#ffffff', 'textUpRightLabel': '#3df0d0', diff --git a/ora/gui/style.qss b/ora/gui/style.qss index 7aeebe8..89f3697 100644 --- a/ora/gui/style.qss +++ b/ora/gui/style.qss @@ -6,6 +6,7 @@ QStackedWidget { background-color: rgb(13, 37, 59); } QLabel { + border: None; color: rgb(201, 216, 229); } QGroupBox { @@ -26,10 +27,21 @@ QRadioButton::indicator:unchecked{ QRadioButton::indicator:checked{ image: url(./images/widgets/radiobox_selected_f.png); } - #analyze_button { border-style: solid; border-width: 2px; border-color: rgb(37, 173, 231); color: rgb(37, 173, 231); } +#save_button { + image: url(./images/widgets/button_save.png); +} +#save_button:hover { + image: url(./images/widgets/button_save_onhover.png); +} +#analyze_button { + image: url(./images/widgets/button_analyze.png); +} +#analyze_button:hover { + image: url(./images/widgets/button_analyze_onhover.png); +} \ No newline at end of file diff --git a/ora/gui/widget.py b/ora/gui/widget.py index 3505ffa..3e88abd 100644 --- a/ora/gui/widget.py +++ b/ora/gui/widget.py @@ -1,6 +1,6 @@ import sys -from PyQt5 import QtGui +from PyQt5 import QtGui, QtCore from PyQt5.Qt import QSize from style import text_colors @@ -103,18 +103,20 @@ def __init__(self, parent=None, text='', img_path=''): self.setLayout(self.layout) -class PicTabItem(QtWidgets.QWidget): +class PicTabItem(QtWidgets.QPushButton): def __init__(self, parent=None, normal_img='', selected_img=''): super(PicTabItem, self).__init__(parent) self.normal_img = normal_img self.selected_img = selected_img - self.label = QtWidgets.QLabel() - self.label.setPixmap(QtGui.QPixmap(normal_img)) + # self.label = QtWidgets.QLabel() + # self.label.setPixmap(QtGui.QPixmap(normal_img)) self.layout = QtWidgets.QGridLayout() - self.layout.addWidget(self.label) + # self.layout.addWidget(self.label) self.layout.setContentsMargins(0, 0, 0, 0) self.setLayout(self.layout) + # self.setPixmap(QtGui.QPixmap(normal_img)) + def to_selected_img(self): self.label.setPixmap(QtGui.QPixmap(self.selected_img)) From 9bafa2edeb78579f5979d9ecb5de589dca2761a5 Mon Sep 17 00:00:00 2001 From: chroming Date: Mon, 21 May 2018 22:53:12 +0800 Subject: [PATCH 16/57] add tab --- ora/gui/gui_.py | 35 ++++++++++++++++++++++++++--------- ora/gui/main.ui | 3 +++ ora/gui/style.qss | 3 +++ ora/gui/widget.py | 14 ++++++++++---- 4 files changed, 42 insertions(+), 13 deletions(-) diff --git a/ora/gui/gui_.py b/ora/gui/gui_.py index 3f20839..514abe8 100644 --- a/ora/gui/gui_.py +++ b/ora/gui/gui_.py @@ -1,5 +1,5 @@ -from PyQt5 import uic, QtCore +from PyQt5 import uic, QtCore, QtWidgets, QtGui from widget import * from style import * @@ -44,6 +44,7 @@ def __init__(self): self.set_control_button(self.min_button, self.max_button, self.close_button) self.tab_listwidget.setFrameShape(QtWidgets.QFrame.NoFrame) + # self.tab_listwidget.setSpacing(50) self.video_listwidget.setFrameShape(QtWidgets.QFrame.NoFrame) self._set_style() @@ -70,31 +71,47 @@ def __init__(self): self._add_custome_item(self.video_listwidget, VideoItem, '/path/1.mp4', 'RUNNING', 'Shanghai Dragons', 'Dallas Fuel', 'replay.png') - self._add_custome_item(self.tab_listwidget, PicTabItem, SRC_PATH+'/tab_icons/1_normal.png', SRC_PATH + '/tab_icons/1_selected.png') - - #self._add_custome_item(self.tab_listwidget, TabItem, "ANALYSIS", 'replay.png') - #self._add_custome_item(self.tab_listwidget, TabItem, "VIDEO PALY", 'replay.png') - #self._add_custome_item(self.tab_listwidget, TabItem, "SETTINGS", 'replay.png') - + self._set_tab_listwidget_items([['1_normal.png', '1_selected.png'], ['2_normal.png', '2_selected.png'], ['3_normal.png', '3_selected.png']]) + self.tab_listwidget.setIconSize(QSize(100, 100)) self._init_connect() def _init_connect(self): - self.tab_listwidget.clicked.connect(lambda: self.main_stackedwidget.setCurrentIndex(self.tab_listwidget.currentRow())) + # self.tab_listwidget.clicked.connect(lambda: self.main_stackedwidget.setCurrentIndex(self.tab_listwidget.currentRow())) + # self.tab_listwidget.clicked.connect(lambda item:item.setIcon(item.selected_icon)) + self.tab_listwidget.itemClicked.connect(self._tab_listwidget_item_clicked) def _init_default(self): self.tab_listwidget.setCurrentRow(0) self.main_stackedwidget.setCurrentIndex(2) + def _set_tab_listwidget_items(self, pics): + for pic in pics: + item = QtWidgets.QListWidgetItem(QtGui.QIcon(SRC_PATH + '/tab_icons/' + pic[0]), '') + item.normal_icon = QtGui.QIcon(SRC_PATH + '/tab_icons/' + pic[0]) + item.selected_icon = QtGui.QIcon(SRC_PATH + '/tab_icons/' + pic[1]) + #item.setIcon(QtGui.QIcon(SRC_PATH + '/tab_icons/' + pic)) + self.tab_listwidget.addItem(item) + @staticmethod def _add_custome_item(listwidget, item_class, *args): citem = item_class(listwidget, *args) - citem.setObjectName('DyItem') + # citem.setObjectName('DyItem') item = QtWidgets.QListWidgetItem(listwidget) item.setSizeHint(citem.sizeHint()) listwidget.addItem(item) listwidget.setItemWidget(item, citem) + def _set_tab_listwidget_normal_icon(self): + for i in range(0, self.tab_listwidget.count()): + item = self.tab_listwidget.item(i) + item.setIcon(item.normal_icon) + + def _tab_listwidget_item_clicked(self, item): + self.main_stackedwidget.setCurrentIndex(self.tab_listwidget.currentRow()) + self._set_tab_listwidget_normal_icon() + item.setIcon(item.selected_icon) + if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) diff --git a/ora/gui/main.ui b/ora/gui/main.ui index b1d4de1..d88c4c3 100644 --- a/ora/gui/main.ui +++ b/ora/gui/main.ui @@ -950,6 +950,9 @@ Qt::ScrollBarAlwaysOff + + QAbstractScrollArea::AdjustToContents + -1 diff --git a/ora/gui/style.qss b/ora/gui/style.qss index 89f3697..520b189 100644 --- a/ora/gui/style.qss +++ b/ora/gui/style.qss @@ -44,4 +44,7 @@ QRadioButton::indicator:checked{ } #analyze_button:hover { image: url(./images/widgets/button_analyze_onhover.png); +} +#tab_listwidget::item { + min-height: 100px; } \ No newline at end of file diff --git a/ora/gui/widget.py b/ora/gui/widget.py index 3e88abd..6fe07ab 100644 --- a/ora/gui/widget.py +++ b/ora/gui/widget.py @@ -108,14 +108,20 @@ def __init__(self, parent=None, normal_img='', selected_img=''): super(PicTabItem, self).__init__(parent) self.normal_img = normal_img self.selected_img = selected_img - # self.label = QtWidgets.QLabel() - # self.label.setPixmap(QtGui.QPixmap(normal_img)) + self.setFixedSize(120, 90) + self.label = QtWidgets.QLabel() + self.label.setPixmap(QtGui.QPixmap(normal_img)) + #self.label.setMinimumSize(120, 90) self.layout = QtWidgets.QGridLayout() - # self.layout.addWidget(self.label) + self.layout.addWidget(self.label) self.layout.setContentsMargins(0, 0, 0, 0) + self.layout.setSizeConstraint(4) self.setLayout(self.layout) - # self.setPixmap(QtGui.QPixmap(normal_img)) + self.clicked.connect(self.button_clicked) + + def button_clicked(self): + print(self.normal_img) def to_selected_img(self): self.label.setPixmap(QtGui.QPixmap(self.selected_img)) From 40e45a51ad1d1ccec12e2f6ea67a40f3a8fd6db5 Mon Sep 17 00:00:00 2001 From: chroming Date: Sat, 16 Jun 2018 11:21:01 +0800 Subject: [PATCH 17/57] add gui api --- ora/gui/gui_api.py | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 ora/gui/gui_api.py diff --git a/ora/gui/gui_api.py b/ora/gui/gui_api.py new file mode 100644 index 0000000..06075ef --- /dev/null +++ b/ora/gui/gui_api.py @@ -0,0 +1,40 @@ + + +def get_video_info(video_path): + """ + Get video info show in video list. + :param video_path: + :return: teamname1, teamname2, length + + """ + pass + + +def publish_analysis(): + """Run when checked 'Publish your analysis'""" + pass + + +def analyze_button_clicked(*args): + """ + Run when click 'ANALYZE' button + You should add args as need. + """ + pass + + +def save_button_clicked(*args): + """ + Run when click 'SAVE' button + You should add args as need. + """ + pass + + +def auto_check_update_checked(): + """Run when checked 'Automatically check for update'""" + pass + + + + From 4781848e2bdbb72eb8768ec9f3aca40477fcb6e3 Mon Sep 17 00:00:00 2001 From: chroming Date: Mon, 18 Jun 2018 23:13:39 +0800 Subject: [PATCH 18/57] update videoitem class --- ora/gui/widget.py | 45 +++++++++++++++++++++++++++++---------------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/ora/gui/widget.py b/ora/gui/widget.py index 6fe07ab..c75b70a 100644 --- a/ora/gui/widget.py +++ b/ora/gui/widget.py @@ -20,6 +20,15 @@ def __init__(self, parent=None): class VideoItem(MousePressChangeBackgroundMixin): def __init__(self, parent=None, up_left_str='', up_right_str='', down_left_str='', down_right_str='', icon_path=''): + """ + The video item class. You can set text/icon with args when instantiate or by call obj.set_path_text, obj.set_icon, etc. + :param parent: + :param up_left_str: Path text + :param up_right_str: Status text + :param down_left_str: Team 1 name + :param down_right_str: Team 2 name + :param icon_path: The item icon path + """ super(VideoItem, self).__init__() self.textUpLayout = QtWidgets.QHBoxLayout() @@ -51,14 +60,12 @@ def __init__(self, parent=None, up_left_str='', up_right_str='', down_left_str=' self.allQHBoxLayout.setContentsMargins(0, 0, 0, 0) self.setLayout(self.allQHBoxLayout) - - self.setTextDown(down_left_str) - self.setLabelText(self.textUpLeftLabel, up_left_str) - self.setLabelText(self.textUpRightLabel, up_right_str) - self.setLabelText(self.textDownLabelTeam1, "TEAM 1") - self.setLabelText(self.textDownLeftLabel, down_left_str) - self.setLabelText(self.textDownLabelTeam2, "TEAM 2") - self.setLabelText(self.textDownRightLabel, down_right_str) + self._set_label_text(self.textUpLeftLabel, up_left_str) + self._set_label_text(self.textUpRightLabel, up_right_str) + self._set_label_text(self.textDownLabelTeam1, "TEAM 1") + self._set_label_text(self.textDownLeftLabel, down_left_str) + self._set_label_text(self.textDownLabelTeam2, "TEAM 2") + self._set_label_text(self.textDownRightLabel, down_right_str) self.setStyleSheet('border: None') @@ -68,23 +75,29 @@ def __init__(self, parent=None, up_left_str='', up_right_str='', down_left_str=' self.iconQLabel.setScaledContents(True) for w, c in text_colors.items(): - self.set_text_color(getattr(self, w), c) + self._set_text_color(getattr(self, w), c) @staticmethod - def set_text_color(widget, color): + def _set_text_color(widget, color): widget.setStyleSheet("color: %s" % color) @staticmethod - def setLabelText(label, text): + def _set_label_text(label, text): label.setText(text) - def setTextUp(self, text): - self.textUpLeftLabel.setText(text) + def set_path_text(self, text): + self._set_label_text(self.textUpLeftLabel, text) + + def set_status_text(self, text): + self._set_label_text(self.textUpRightLabel, text) + + def set_team_left_text(self, text): + self._set_label_text(self.textDownLabelTeam1, text) - def setTextDown(self, text): - self.textUpRightLabel.setText(text) + def set_team_right_text(self, text): + self._set_label_text(self.textDownLabelTeam2, text) - def setIcon(self, img_path): + def set_icon(self, img_path): self.iconQLabel.setPixmap(QtGui.QPixmap(img_path)) From 641e5d322d409072f9a8246aa06e5d750f6c8a9a Mon Sep 17 00:00:00 2001 From: chroming Date: Mon, 18 Jun 2018 23:14:00 +0800 Subject: [PATCH 19/57] update ui --- ora/gui/functions.py | 8 +++++++ ora/gui/gui_.py | 52 +++++++++++++++++++++++++------------------- ora/gui/main.ui | 5 ++++- ora/gui/style.py | 8 +++++++ 4 files changed, 50 insertions(+), 23 deletions(-) diff --git a/ora/gui/functions.py b/ora/gui/functions.py index 9efae2f..d017ce1 100644 --- a/ora/gui/functions.py +++ b/ora/gui/functions.py @@ -18,6 +18,10 @@ def set_background_color(widget, color): widget.setStyleSheet("background-color: %s" % color) +def set_plain_text(widget, text): + widget.setPlainText(text) + + def pic_to_icon(file_name, path='icons'): return QIcon(join(SRC_PATH, path, file_name)) @@ -28,6 +32,10 @@ def set_full_icon(widget, file_name, path='icons'): widget.setIconSize(QSize(100, 100)) +def remove_listwidget_item(listwidget): + listwidget.takeItem(listwidget.currentRow()) + + def set_qclass_child_widgets_style(widget, qclass, style): for c in get_qclass_child_widgets(widget, qclass): c.setStyleSheet(style) diff --git a/ora/gui/gui_.py b/ora/gui/gui_.py index 514abe8..bcef35d 100644 --- a/ora/gui/gui_.py +++ b/ora/gui/gui_.py @@ -1,6 +1,5 @@ from PyQt5 import uic, QtCore, QtWidgets, QtGui - from widget import * from style import * from functions import * @@ -29,13 +28,23 @@ def _add_widget_item(parent, layout, widget_class, geometry, *args, **kwargs): layout.addWidget(widget) return widget - def _set_hover_icon(self, widget, normal_file, hover_file): + @staticmethod + def _add_custome_item(listwidget, item_class, *args): + citem = item_class(listwidget, *args) + # citem.setObjectName('DyItem') + item = QtWidgets.QListWidgetItem(listwidget) + item.setSizeHint(citem.sizeHint()) + listwidget.addItem(item) + listwidget.setItemWidget(item, citem) + + @staticmethod + def _set_hover_icon(widget, normal_file, hover_file): set_full_icon(widget, normal_file, 'widgets') widget.setAttribute(Qt.WA_Hover, True) widget.setStyleSheet('background-image: url(%s)' % (SRC_PATH + '/widgets/' + hover_file)) -class BeautiUi(windowui, UiFunc, WindowDragMixin, ControlButtonMixin): +class BeautiUi(windowui, WindowDragMixin, ControlButtonMixin): def __init__(self): super(BeautiUi, self).__init__() self.setupUi(self) @@ -61,47 +70,41 @@ def _set_style(self): for wi, cl in background_colors.items(): set_background_color(getattr(self, wi), cl) + for wi, tx in plain_text.items(): + set_plain_text(getattr(self, wi), tx) + for label in get_qclass_child_widgets(self.stackedWidgetPage1, QtWidgets.QLineEdit): pass -class MainUi(QtWidgets.QMainWindow, BeautiUi): + +class MainUi(QtWidgets.QMainWindow, BeautiUi, UiFunc): def __init__(self): super(MainUi, self).__init__() - self._add_custome_item(self.video_listwidget, VideoItem, '/path/1.mp4', 'WAITING', 'Shanghai Dragons', 'Dallas Fuel', 'replay.png') - self._add_custome_item(self.video_listwidget, VideoItem, '/path/1.mp4', 'RUNNING', 'Shanghai Dragons', 'Dallas Fuel', - 'replay.png') - self._set_tab_listwidget_items([['1_normal.png', '1_selected.png'], ['2_normal.png', '2_selected.png'], ['3_normal.png', '3_selected.png']]) self.tab_listwidget.setIconSize(QSize(100, 100)) - + self._init_widget() self._init_connect() + self._init_default() + + def _init_widget(self): + self._add_custome_item(self.video_listwidget, VideoItem, '/path/1.mp4', 'WAITING', 'Shanghai Dragons', 'Dallas Fuel', 'replay.png') + self._add_custome_item(self.video_listwidget, VideoItem, '/path/1.mp4', 'RUNNING', 'Shanghai Dragons', 'Dallas Fuel', 'replay.png') def _init_connect(self): - # self.tab_listwidget.clicked.connect(lambda: self.main_stackedwidget.setCurrentIndex(self.tab_listwidget.currentRow())) - # self.tab_listwidget.clicked.connect(lambda item:item.setIcon(item.selected_icon)) self.tab_listwidget.itemClicked.connect(self._tab_listwidget_item_clicked) + self.video_listwidget.customContextMenuRequested.connect(self._video_list_context_menu) def _init_default(self): self.tab_listwidget.setCurrentRow(0) - self.main_stackedwidget.setCurrentIndex(2) + self.main_stackedwidget.setCurrentIndex(0) def _set_tab_listwidget_items(self, pics): for pic in pics: item = QtWidgets.QListWidgetItem(QtGui.QIcon(SRC_PATH + '/tab_icons/' + pic[0]), '') item.normal_icon = QtGui.QIcon(SRC_PATH + '/tab_icons/' + pic[0]) item.selected_icon = QtGui.QIcon(SRC_PATH + '/tab_icons/' + pic[1]) - #item.setIcon(QtGui.QIcon(SRC_PATH + '/tab_icons/' + pic)) self.tab_listwidget.addItem(item) - @staticmethod - def _add_custome_item(listwidget, item_class, *args): - citem = item_class(listwidget, *args) - # citem.setObjectName('DyItem') - item = QtWidgets.QListWidgetItem(listwidget) - item.setSizeHint(citem.sizeHint()) - listwidget.addItem(item) - listwidget.setItemWidget(item, citem) - def _set_tab_listwidget_normal_icon(self): for i in range(0, self.tab_listwidget.count()): item = self.tab_listwidget.item(i) @@ -112,6 +115,11 @@ def _tab_listwidget_item_clicked(self, item): self._set_tab_listwidget_normal_icon() item.setIcon(item.selected_icon) + def _video_list_context_menu(self): + menu = QtWidgets.QMenu() + menu.addAction('删除', lambda _ :remove_listwidget_item(self.video_listwidget)) + menu.exec_(QtGui.QCursor.pos()) + if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) diff --git a/ora/gui/main.ui b/ora/gui/main.ui index d88c4c3..506d9fa 100644 --- a/ora/gui/main.ui +++ b/ora/gui/main.ui @@ -50,6 +50,9 @@ 8 + + Qt::CustomContextMenu + video_listwidget @@ -723,7 +726,7 @@ - + 0 diff --git a/ora/gui/style.py b/ora/gui/style.py index 85732c0..fabd5d7 100644 --- a/ora/gui/style.py +++ b/ora/gui/style.py @@ -1,4 +1,6 @@ +from default import COPY_RIGHT + background_imgs = { 'left_group': 'left_bg.png', 'top_group': 'top_bg.png', @@ -22,6 +24,7 @@ 'max_button': 'design_08', 'close_button': 'design_09' } + text_colors = { 'textUpLeftLabel': '#ffffff', 'textUpRightLabel': '#3df0d0', @@ -30,4 +33,9 @@ 'textDownLeftLabel': '#80bce2', 'textDownRightLabel': '#80bce2' +} + +# set widget text with setPlainText() +plain_text = { + 'copy_right_text_edit': COPY_RIGHT, } \ No newline at end of file From 33ac4b342202c60b19484d2aa93d066c8fcf61b8 Mon Sep 17 00:00:00 2001 From: chroming Date: Mon, 18 Jun 2018 23:17:11 +0800 Subject: [PATCH 20/57] add default text --- ora/gui/default.py | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 ora/gui/default.py diff --git a/ora/gui/default.py b/ora/gui/default.py new file mode 100644 index 0000000..5990880 --- /dev/null +++ b/ora/gui/default.py @@ -0,0 +1,6 @@ + +COPY_RIGHT = ''' + COPYRIGHT + + ''' + From 9cc5501dac43436454f8b61abb5f4167515429b3 Mon Sep 17 00:00:00 2001 From: chroming Date: Mon, 18 Jun 2018 23:17:21 +0800 Subject: [PATCH 21/57] add readme --- ora/gui/readme.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 ora/gui/readme.md diff --git a/ora/gui/readme.md b/ora/gui/readme.md new file mode 100644 index 0000000..ea19fa6 --- /dev/null +++ b/ora/gui/readme.md @@ -0,0 +1,5 @@ +The Gui with PyQt5 is under development…… + +You can run demo with: + +`Python gui_.py` \ No newline at end of file From 463d9833203457dfa2575d3f771ebff093acb35c Mon Sep 17 00:00:00 2001 From: chroming Date: Sun, 24 Jun 2018 21:19:20 +0800 Subject: [PATCH 22/57] add video selected color --- ora/gui/mixin.py | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/ora/gui/mixin.py b/ora/gui/mixin.py index b56841a..2810eab 100644 --- a/ora/gui/mixin.py +++ b/ora/gui/mixin.py @@ -7,9 +7,24 @@ class MousePressChangeBackgroundMixin(QtWidgets.QWidget): - def __init__(self): + def __init__(self, normal_color="#143048'", selected_color="#111111"): super(MousePressChangeBackgroundMixin, self).__init__() self.setMouseTracking(True) + self.normal_color = normal_color + self.selected_color = selected_color + + @property + def _color(self): + return '#' + ''.join([str(hex(c)[2:]) for c in self.palette().color(self.backgroundRole()).toRgb().getRgb()[:3]]) + + def is_selected(self): + return True if self._color == self.selected_color else False + + def _set_color(self, color): + self.setStyleSheet("background-color: %s" % color) + for c in self.children(): + if isinstance(c, QtWidgets.QLabel): + c.setStyleSheet("background-color: %s" % color) def enterEvent(self, QMouseEvent): pass @@ -18,17 +33,12 @@ def mouseMoveEvent(self, QMouseEvent): pass def mousePressEvent(self, QMouseEvent): - self.setStyleSheet("background-color: %s" % "#11283E") - for c in self.children(): - if isinstance(c, QtWidgets.QLabel): - c.setStyleSheet("background-color: %s" % "#11283E") + color = self.normal_color if self.is_selected() else self.selected_color + self._set_color(color) def mouseReleaseEvent(self, QMouseEvent): - self.setStyleSheet("background-color: %s" % "#14304A") - for c in self.children(): - if isinstance(c, QtWidgets.QLabel): - c.setStyleSheet("background-color: %s" % "#14304A") - + color = self._color + self._set_color(color) class WindowDragMixin(object): From a688fe9fba8c0a12a85f77641cce802f18fcef20 Mon Sep 17 00:00:00 2001 From: chroming Date: Sun, 24 Jun 2018 21:20:13 +0800 Subject: [PATCH 23/57] add some property --- ora/gui/gui_.py | 48 ++++++++++++++++++++++++++++ ora/gui/main.ui | 83 +++++++++++++++++++++++++------------------------ 2 files changed, 91 insertions(+), 40 deletions(-) diff --git a/ora/gui/gui_.py b/ora/gui/gui_.py index bcef35d..1373e45 100644 --- a/ora/gui/gui_.py +++ b/ora/gui/gui_.py @@ -84,6 +84,7 @@ def __init__(self): self.tab_listwidget.setIconSize(QSize(100, 100)) self._init_widget() self._init_connect() + self._init_propety() self._init_default() def _init_widget(self): @@ -94,6 +95,17 @@ def _init_connect(self): self.tab_listwidget.itemClicked.connect(self._tab_listwidget_item_clicked) self.video_listwidget.customContextMenuRequested.connect(self._video_list_context_menu) + self.team_left_lineedit.editingFinished.connect(lambda: self._team_name_edit_finished('left')) + self.team_right_lineedit.editingFinished.connect(lambda: self._team_name_edit_finished('right')) + + def _init_propety(self): + + # set player's text to property like self.player_left0_text + for widget in get_qclass_child_widgets(self.team_setting_group, QtWidgets.QLineEdit): + name = widget.objectName + if name.startswith('player_'): + setattr(self, name.rstrip('lineedit') + 'text', widget.text()) + def _init_default(self): self.tab_listwidget.setCurrentRow(0) self.main_stackedwidget.setCurrentIndex(0) @@ -120,6 +132,42 @@ def _video_list_context_menu(self): menu.addAction('删除', lambda _ :remove_listwidget_item(self.video_listwidget)) menu.exec_(QtGui.QCursor.pos()) + def _team_name_edit_finished(self, team='left'): + current_video_item = self.current_video_item + if team == 'left': + current_video_item.set_team_left_text(self.input_team_left_text) + else: + current_video_item.set_team_right_text(self.input_team_right_text) + + @property + def input_team_left_text(self): + return self.team_left_lineedit.text() + + @property + def input_team_right_text(self): + return self.team_right_lineedit.text() + + @property + def current_video_item(self): + item = self.video_listwidget.currentItem() + return self.video_listwidget.itemWidget(item) + + @property + def is_published(self): + return self.publish_box.isChecked() + + @property + def is_owl(self): + return True if self.type_owl_radiobutton.isChecked() else False + + @property + def start_time(self): + return self.start_time_lineedit.text() + + @property + def end_time(self): + return self.end_time_lineedit.text() + if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) diff --git a/ora/gui/main.ui b/ora/gui/main.ui index 506d9fa..4258425 100644 --- a/ora/gui/main.ui +++ b/ora/gui/main.ui @@ -68,8 +68,11 @@ true + + true + - + 712 @@ -82,7 +85,7 @@ false - + 842 @@ -95,7 +98,7 @@ false - + 842 @@ -108,7 +111,7 @@ false - + 712 @@ -121,7 +124,7 @@ false - + 842 @@ -134,7 +137,7 @@ false - + 712 @@ -147,7 +150,7 @@ false - + 712 @@ -163,7 +166,7 @@ false - + 840 @@ -176,7 +179,7 @@ false - + 712 @@ -189,7 +192,7 @@ false - + 712 @@ -202,7 +205,7 @@ false - + 842 @@ -215,7 +218,7 @@ false - + 712 @@ -228,7 +231,7 @@ false - + 842 @@ -241,7 +244,7 @@ false - + 842 @@ -254,7 +257,7 @@ false - + 712 @@ -267,7 +270,7 @@ false - + 842 @@ -306,7 +309,7 @@ Type of game - + 818 @@ -319,7 +322,7 @@ OWL - + 886 @@ -361,7 +364,7 @@ false - + 712 @@ -374,7 +377,7 @@ false - + 842 @@ -648,30 +651,30 @@ video_setting_group video_title_group video_listwidget - lineEdit - lineEdit_2 - lineEdit_3 - lineEdit_4 - lineEdit_5 - lineEdit_6 - lineEdit_8 - lineEdit_9 - lineEdit_10 - lineEdit_11 - lineEdit_12 - lineEdit_13 - lineEdit_14 - lineEdit_15 - lineEdit_16 - lineEdit_17 + player_left0_lineedit + player_right0_lineedit + player_right1_lineedit + player_left1_lineedit + player_right2_lineedit + player_left2_lineedit + start_time_lineedit + end_time_lineedit + player_left5_lineedit + player_left3_lineedit + player_right5_lineedit + player_left4_lineedit + player_right4_lineedit + player_right3_lineedit + player_left6_lineedit + player_right6_lineedit label_6 label_7 - radioButton - radioButton_2 + type_owl_radiobutton + type_custom_radiobutton label_8 publish_box - lineEdit_18 - lineEdit_19 + team_left_lineedit + team_right_lineedit label_10 label_11 label_12 From 670548f64f4c7f9b66372bb303cbeb4796a2578b Mon Sep 17 00:00:00 2001 From: chroming Date: Sun, 8 Jul 2018 21:48:06 +0800 Subject: [PATCH 24/57] update ui --- ora/gui/gui_.py | 18 +++++++++++++++++- ora/gui/main.ui | 26 +++++++++++++------------- 2 files changed, 30 insertions(+), 14 deletions(-) diff --git a/ora/gui/gui_.py b/ora/gui/gui_.py index 1373e45..b96d681 100644 --- a/ora/gui/gui_.py +++ b/ora/gui/gui_.py @@ -98,6 +98,9 @@ def _init_connect(self): self.team_left_lineedit.editingFinished.connect(lambda: self._team_name_edit_finished('left')) self.team_right_lineedit.editingFinished.connect(lambda: self._team_name_edit_finished('right')) + self.save_button.clicked.connect(self.save_button_clicked) + self.analyze_button.clicked.connect(self.analyze_button_clicked) + def _init_propety(self): # set player's text to property like self.player_left0_text @@ -129,7 +132,7 @@ def _tab_listwidget_item_clicked(self, item): def _video_list_context_menu(self): menu = QtWidgets.QMenu() - menu.addAction('删除', lambda _ :remove_listwidget_item(self.video_listwidget)) + menu.addAction('删除', lambda _:remove_listwidget_item(self.video_listwidget)) menu.exec_(QtGui.QCursor.pos()) def _team_name_edit_finished(self, team='left'): @@ -139,6 +142,19 @@ def _team_name_edit_finished(self, team='left'): else: current_video_item.set_team_right_text(self.input_team_right_text) + def select_video(self): + filename, _ = QtWidgets.QFileDialog.getOpenFileName(self, u'Select Video', filter="* (*.*)") + self._set_new_video(filename) + + def _set_new_video(self, path): + pass + + def save_button_clicked(self): + pass + + def analyze_button_clicked(self): + pass + @property def input_team_left_text(self): return self.team_left_lineedit.text() diff --git a/ora/gui/main.ui b/ora/gui/main.ui index 4258425..b8e2152 100644 --- a/ora/gui/main.ui +++ b/ora/gui/main.ui @@ -6,7 +6,7 @@ 0 0 - 1089 + 1085 789 @@ -472,9 +472,9 @@ - 12 + 2 -2 - 255 + 265 35 @@ -538,9 +538,9 @@ - 12 + 2 4 - 207 + 267 37 @@ -780,10 +780,10 @@ - 118 - 0 - 973 - 91 + 104 + -2 + 989 + 97 @@ -816,7 +816,7 @@ - 700 + 714 2 65 85 @@ -846,7 +846,7 @@ - 764 + 778 2 65 83 @@ -867,7 +867,7 @@ - 828 + 842 2 71 85 @@ -888,7 +888,7 @@ - 900 + 912 4 65 81 From 2057db664b3df8448ee059e4691714c1603259a4 Mon Sep 17 00:00:00 2001 From: chroming Date: Tue, 10 Jul 2018 22:57:15 +0800 Subject: [PATCH 25/57] add select file/folder --- ora/gui/gui_.py | 16 ++++++++-------- ora/gui/widget.py | 3 ++- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/ora/gui/gui_.py b/ora/gui/gui_.py index b96d681..912a04a 100644 --- a/ora/gui/gui_.py +++ b/ora/gui/gui_.py @@ -88,8 +88,8 @@ def __init__(self): self._init_default() def _init_widget(self): - self._add_custome_item(self.video_listwidget, VideoItem, '/path/1.mp4', 'WAITING', 'Shanghai Dragons', 'Dallas Fuel', 'replay.png') - self._add_custome_item(self.video_listwidget, VideoItem, '/path/1.mp4', 'RUNNING', 'Shanghai Dragons', 'Dallas Fuel', 'replay.png') + self._add_custome_item(self.video_listwidget, VideoItem, '', '/path/1.mp4', 'WAITING', 'Shanghai Dragons', 'Dallas Fuel', 'replay.png') + self._add_custome_item(self.video_listwidget, VideoItem, '', '/path/1.mp4', 'RUNNING', 'Shanghai Dragons', 'Dallas Fuel', 'replay.png') def _init_connect(self): self.tab_listwidget.itemClicked.connect(self._tab_listwidget_item_clicked) @@ -100,6 +100,7 @@ def _init_connect(self): self.save_button.clicked.connect(self.save_button_clicked) self.analyze_button.clicked.connect(self.analyze_button_clicked) + self.analyze_button.clicked.connect(self.select_video) # TODO: need connect to add video button def _init_propety(self): @@ -137,20 +138,19 @@ def _video_list_context_menu(self): def _team_name_edit_finished(self, team='left'): current_video_item = self.current_video_item - if team == 'left': - current_video_item.set_team_left_text(self.input_team_left_text) - else: - current_video_item.set_team_right_text(self.input_team_right_text) + setattr(current_video_item, 'set_team_%s_text' % team, getattr(self, 'input_team_%s_text' % team)) def select_video(self): filename, _ = QtWidgets.QFileDialog.getOpenFileName(self, u'Select Video', filter="* (*.*)") self._set_new_video(filename) def _set_new_video(self, path): - pass + self._add_custome_item(self.video_listwidget, VideoItem, path, path, 'WAITING', 'Shanghai Dragons', + 'Dallas Fuel', 'replay.png') def save_button_clicked(self): - pass + dirname = QtWidgets.QFileDialog.getExistingDirectory(self, u'Select Folder') + self.path_lineedit.setText(dirname) def analyze_button_clicked(self): pass diff --git a/ora/gui/widget.py b/ora/gui/widget.py index c75b70a..ef05b60 100644 --- a/ora/gui/widget.py +++ b/ora/gui/widget.py @@ -19,7 +19,7 @@ def __init__(self, parent=None): class VideoItem(MousePressChangeBackgroundMixin): - def __init__(self, parent=None, up_left_str='', up_right_str='', down_left_str='', down_right_str='', icon_path=''): + def __init__(self, parent=None, path='', up_left_str='', up_right_str='', down_left_str='', down_right_str='', icon_path=''): """ The video item class. You can set text/icon with args when instantiate or by call obj.set_path_text, obj.set_icon, etc. :param parent: @@ -30,6 +30,7 @@ def __init__(self, parent=None, up_left_str='', up_right_str='', down_left_str=' :param icon_path: The item icon path """ super(VideoItem, self).__init__() + print(path) self.textUpLayout = QtWidgets.QHBoxLayout() self.textUpLeftLabel = FullLabel() From 1ac134ff3045439e2fc84f873a383c31f61aad3d Mon Sep 17 00:00:00 2001 From: ForeverYou <446529127@qq.com> Date: Wed, 25 Jul 2018 22:08:50 +0800 Subject: [PATCH 26/57] add player basic data --- ora/stats/single_match_stats.py | 546 +++++++++++++++++++++++++++++--- 1 file changed, 496 insertions(+), 50 deletions(-) diff --git a/ora/stats/single_match_stats.py b/ora/stats/single_match_stats.py index feedf2f..c927681 100644 --- a/ora/stats/single_match_stats.py +++ b/ora/stats/single_match_stats.py @@ -1,3 +1,4 @@ +# coding: utf-8 import os import sys import zipfile @@ -9,10 +10,8 @@ class SingleMatchStats: """Class of a SingleMatchStats object. - Retrieves and stores all stats listed in competitive_stats_rating_list.xlsx. - Attributes: data_metainfo: Raw data in metainfo.json in dict format data_frames: Raw data in frames.json in dict format @@ -27,16 +26,12 @@ class SingleMatchStats: def __init__(self, zip_path): """Parse JSON zip pack and return corresponding dicts - Author: Appcell - Args: zip_path: path of the .zip file needs to be analyzed - Returns: None - """ archive = zipfile.ZipFile(zip_path, 'r') self.data_metainfo = json.loads(archive.read('metainfo.json')) @@ -45,21 +40,21 @@ def __init__(self, zip_path): self.data_sheet2 = json.loads(archive.read('data_sheet2.json')) self.data_sheet3 = json.loads(archive.read('data_sheet3.json')) self.elims = self.get_eliminations() + self.resurrects = self.get_resurrects() + self.suicides = self.get_suicides() + self.demechs = self.get_demechs() self.teamfight_separations = self.get_teamfight_separations() self.teamfight = self.get_all_teamfight() + self.playerArr = self.get_init_plarer_basic_data() def get_eliminations(self, start_time=0, end_time=0): """Get all eliminatins in a given time range. - If start_time == 0 and end_time == 0, return full elim list. - Author: Appcell - Args: start_time: start of the time range given in seconds end_time: end of the time range given in seconds - Returns: A list of all eliminatins in a given time range. """ @@ -88,12 +83,10 @@ def get_eliminations_incremented(self, data, start_time, end_time): Author: Appcell - Args: data: list of given elimination data start_time: start of the time range given in seconds end_time: end of the time range given in seconds - Returns: A list of all eliminatins in a given time range appended to original list. """ @@ -104,13 +97,10 @@ def get_teamfight_index(self, time): """Get index of team-fight happening at given timestamp. A temporary standard for separating team-fights: - Author: ForYou - Args: time: current time in seconds - Returns: Index of team-fight happening at 'time'. """ @@ -130,10 +120,8 @@ def get_teamfight_separations(self): Author: Appcell - Args: None - Returns: A list of all timestamps marking separations between each teamfight. """ @@ -149,14 +137,11 @@ def get_teamfight_separations(self): def get_ults(self,start_time, end_time): """输出时间段内的data_sheet3 - Author: maocili - Args: start_time : 开始时间 end_time : 结束时间 - Returns: res : 包含data_sheet3的list """ @@ -179,14 +164,11 @@ def get_ults(self,start_time, end_time): def get_arr_varitation(self, start_time, end_time): """根据self.data_sheet3 输出时间段中的大招能量变化 - Author: maocili - Args: start_time : 开始时间 end_time : 结束时间 - Returns: res : 包含大招能量变化的dict """ @@ -210,15 +192,12 @@ def get_arr_varitation(self, start_time, end_time): def get_ult_vary(self, data, start_time, end_time): """在data的基础上加上新时间段的变化 - Author: maocili - Args: data : 时间段的大招能量变化 start_time : 开始时间 end_time : 结束时间 - Returns: res : 两个时间段的大招能量变化 """ @@ -232,13 +211,10 @@ def get_ult_vary(self, data, start_time, end_time): def get_total_time(self): """get the time of the game - Author: ngc7293 - Args: None - Returns: float : the timestamps of the game """ @@ -246,10 +222,8 @@ def get_total_time(self): def get_all_eliminations(self): """get the total eliminations - Author: ngc7293 - Args: None @@ -261,13 +235,10 @@ def get_all_eliminations(self): def get_all_deaths(self): """get the total deaths - Author: ngc7293 - Args: None - Returns: int: number of total deaths """ @@ -283,13 +254,10 @@ def get_all_deaths(self): def get_most_elim_player(self): """get the most eliminations players - Author: ngc7293 - Args: None - Returns: dict: the player with most elims(number,name,the number of eliminations) """ @@ -315,13 +283,10 @@ def get_most_elim_player(self): def get_most_kda_player(self): """get the most kd-rate players - Author: ngc7293 - Args: None - Returns: str: the player have most kd-rate """ @@ -352,13 +317,10 @@ def get_most_kda_player(self): def get_all_teamfight(self): """get the teamfight in whole game - Author: ngc7293 - Args: None - Returns: list: the list of all teamfights """ @@ -383,13 +345,10 @@ def get_all_teamfight(self): def get_avgtime_teamfight(self): """get the avg teamfight time in whole game - Author: ngc7293 - Args: None - Returns: float: the avgtime of all teamfight """ @@ -398,14 +357,501 @@ def get_avgtime_teamfight(self): def get_count_teamfight(self): """get the teamfights' count - Author: ngc7293 - Args: None - Returns: int: the count of teamfight """ - return len(self.teamfight) \ No newline at end of file + return len(self.teamfight) + + def get_init_plarer_basic_data(self): + ''' + 根据data_sheet2初始化各个选手基本数据 + Author: + ForYou + Args: + None + Returns: + playerArr:以选手player为单位的数组,共12个,每个player中包括以下内容: + team:队伍名称 + team_status:队伍进攻或防守 + index:编号从左往右 + name:选手id + starting lineup:首先使用的英雄 + final lineup:最后使用的英雄 + totalhero:使用的英雄数量 + + totalEliminate:击杀总数(不含助攻即最后一击) + totalEliminateDetail:击杀来源(数组) + chara:英雄名 + num:击杀次数 + totalassist:助攻总数 + totalassistDetail:助攻来源(数组) + chara:英雄名 + num:助攻次数 + totalResurrect:复活总数 + totaldie:死亡总数 + totaldieDetail:死亡来源(数组) + chara:英雄名 + num:死亡次数 + totalcritical die:被爆头击杀总数 + totalSuicide:自杀总数 + totalResurrected:被复活总数 + totalcritical kill:爆头击杀总数 + totalassist die:被助攻总数(集火目标) + 机甲相关 + totalDemech:击杀机甲总数(不含助攻即最后一击) + totalDemechassist:助攻机甲总数 + totalDemechdie:机甲死亡总数 + totalDemechcritical die:机甲被爆头击杀总数 + totalDemechcritical kill:爆头击杀机甲总数 + totalDemechassist die:机甲被助攻总数(集火目标) + heros:(数组)使用的英雄明细如下 + chara:英雄名 + Eliminate:击杀总数(不含助攻即最后一击) + EliminateDetail:击杀来源(数组) + chara:英雄名 + num:击杀次数 + assist:助攻总数 + assistDetail:助攻来源(数组) + chara:英雄名 + num:助攻次数 + Resurrect:复活总数 + die:死亡总数 + dieDetail:死亡来源(数组) + chara:英雄名 + num:死亡次数 + critical die:被爆头击杀总数 + Suicide:自杀总数 + Resurrected:被复活总数 + critical kill:爆头击杀总数 + assist die:被助攻总数(集火目标) + 机甲相关 + Demech:击杀机甲总数(不含助攻即最后一击) + Demechassist:助攻机甲总数 + Demechdie:机甲死亡总数 + Demechcritical die:机甲被爆头击杀总数 + Demechcritical kill:爆头击杀机甲总数 + Demechassist die:机甲被助攻总数(集火目标) + + ''' + heros = {'chara':'','Eliminate':0,'assist':0,'Resurrect':0,'die':0,'Suicide':0,'Resurrected':0,'critical die':0,'critical kill':0,'assist die':0,'EliminateDetail':[],'assistDetail':[],'dieDetail':[]} + total = {'totalhero':1,'totalEliminate':0,'totalassist':0,'totalResurrect':0,'totaldie':0,'totalSuicide':0,'totalResurrected':0,'totalcritical die':0,'totalcritical kill':0,'totalassist die':0,'totalDemech':0,'totalDemechassist':0,'totalDemechdie':0,'totalDemechcritical die':0,'totalDemechcritical kill':0,'totalDemechassist die':0,'totalEliminateDetail':[],'totalassistDetail':[],'totaldieDetail':[]} + playerArr = [] + for teamindex, teamvalue in enumerate(self.data_sheet2): + for player in teamvalue['players']: + hero = player['starting lineup'] + heros['chara'] = hero + player['heros'] = [] + player['heros'].append(heros) + player['team'] = teamvalue['team'] + player['team_status'] = teamvalue['team_status'] + for key in total: + player[key] = total[key] + playerArr.append(player) + return playerArr + + def get_resurrects(self, start_time=0, end_time=0): + """Get all resurrects in a given time range. + If start_time == 0 and end_time == 0, return full resurrect list. + Author: + ForYou + Args: + start_time: start of the time range given in seconds + end_time: end of the time range given in seconds + Returns: + A list of all resurrects in a given time range. + """ + res = [] + if end_time == 0 and start_time == 0: + for event in self.data_sheet1: + if event['action'] == 'Resurrect': + time_arr = event['time'].split(':') + curr_time = stats.hms_to_seconds(time_arr[0], + time_arr[1], time_arr[2]) + event['time'] = curr_time + res.append(event) + else: + for event in self.data_sheet1: + time_arr = event['time'].split(':') + curr_time = stats.hms_to_seconds(time_arr[0], + time_arr[1], time_arr[2]) + if curr_time >= start_time and curr_time >= end_time \ + and self.event['action'] == 'Resurrect': + event['time'] = curr_time + res.append(event) + return res + + def get_suicides(self, start_time=0, end_time=0): + """Get all suicides in a given time range. + If start_time == 0 and end_time == 0, return full suicide list. + Author: + ForYou + Args: + start_time: start of the time range given in seconds + end_time: end of the time range given in seconds + Returns: + A list of all suicides in a given time range. + """ + res = [] + if end_time == 0 and start_time == 0: + for event in self.data_sheet1: + if event['action'] == 'Suicide': + time_arr = event['time'].split(':') + curr_time = stats.hms_to_seconds(time_arr[0], + time_arr[1], time_arr[2]) + event['time'] = curr_time + res.append(event) + else: + for event in self.data_sheet1: + time_arr = event['time'].split(':') + curr_time = stats.hms_to_seconds(time_arr[0], + time_arr[1], time_arr[2]) + if curr_time >= start_time and curr_time >= end_time \ + and self.event['action'] == 'Suicide': + event['time'] = curr_time + res.append(event) + return res + + def get_demechs(self, start_time=0, end_time=0): + """Get all demechs in a given time range. + If start_time == 0 and end_time == 0, return full demech list. + Author: + ForYou + Args: + start_time: start of the time range given in seconds + end_time: end of the time range given in seconds + Returns: + A list of all demechs in a given time range. + """ + res = [] + if end_time == 0 and start_time == 0: + for event in self.data_sheet1: + if event['action'] == 'Demech': + time_arr = event['time'].split(':') + curr_time = stats.hms_to_seconds(time_arr[0], + time_arr[1], time_arr[2]) + event['time'] = curr_time + res.append(event) + else: + for event in self.data_sheet1: + time_arr = event['time'].split(':') + curr_time = stats.hms_to_seconds(time_arr[0], + time_arr[1], time_arr[2]) + if curr_time >= start_time and curr_time >= end_time \ + and self.event['action'] == 'Demech': + event['time'] = curr_time + res.append(event) + return res + + def get_player_basic_eliminates(self,start_time=0,end_time=0,data=0): + ''' + 获取在原数据基础上返回固定时间段内击杀相关数据粗加工 + Author: + ForYou + Args: + start_time开始时间end_time结束时间data原数据 + Returns: + 同get_init_plarer_basic_data()返回值 + ''' + if data == 0: + playerArr = self.playerArr + else: + playerArr = data + if end_time == 0 and start_time == 0: + eliminations = self.elims + else: + eliminations = self.get_eliminations(start_time,end_time) + heros = {'chara':'','Eliminate':0,'assist':0,'Resurrect':0,'die':0,'Suicide':0,'Resurrected':0,'critical die':0,'critical kill':0,'assist die':0,'EliminateDetail':[],'assistDetail':[],'dieDetail':[]} + for index, value in enumerate(eliminations): + for index1, value1 in enumerate(playerArr): + if value1['name'] == value['subject']['player']: + playerArr[index1]['totalEliminate'] = playerArr[index1]['totalEliminate']+1 + if value['critical kill'] =='Y': + playerArr[index1]['totalcritical kill'] = playerArr[index1]['totalcritical kill']+1 + heroEliminate = 0 + for index3 , value3 in enumerate(value1['totalEliminateDetail']): + if value3['chara'] == value['object']['chara']: + heroEliminate = 1 + playerArr[index1]['totalEliminateDetail'][index3]['num'] = playerArr[index1]['totalEliminateDetail'][index3]['num']+1 + break + if heroEliminate == 0: + newheroEliminate = {'chara':value['object']['chara'],'num':1} + playerArr[index1]['totalEliminateDetail'].append(newheroEliminate) + heroisexsit = 0 + for index2, value2 in enumerate(value1['heros']): + if value2['chara'] == value['subject']['chara']: + heroisexsit = 1 + playerArr[index1]['heros'][index2]['Eliminate'] = playerArr[index1]['heros'][index2]['Eliminate']+1 + if value['critical kill'] == 'Y': + playerArr[index1]['heros'][index2]['critical kill'] = playerArr[index1]['heros'][index2]['critical kill']+1 + heroEliminate = 0 + for index4 , value4 in enumerate(value1['heros']['EliminateDetail']): + if value4['chara'] == value['object']['chara']: + heroEliminate = 1 + playerArr[index1]['heros'][index2]['EliminateDetail'][index4]['num'] = playerArr[index1]['heros'][index2]['EliminateDetail'][index4]['num']+1 + break + if heroEliminate == 0: + newheroEliminate = {'chara':value['object']['chara'],'num':1} + playerArr[index1]['heros'][index2]['EliminateDetail'].append(newheroEliminate) + break + if heroisexsit == 0: + newhero = deepcopy(heros) + newhero['chara'] = value['subject']['chara'] + newhero['Eliminate'] = 1 + newheroEliminate = {'chara':value['object']['chara'],'num':1} + newhero['EliminateDetail'].append(newheroEliminate) + playerArr[index1]['totalhero'] = playerArr[index1]['totalhero'] + 1 + if value['critical kill'] == 'Y': + newhero['critical kill'] = 1 + playerArr[index1]['heros'].append(newhero) + totalassistdie = 0 + for assistplayer in value['assist']: + if value1['name'] == assist[assistplayer]['player']: + totalassistdie = totalassistdie + 1 + playerArr[index1]['totalassist'] = playerArr[index1]['totalassist']+1 + heroassist = 0 + for index3 , value3 in enumerate(value1['totalassistDetail']): + if value3['chara'] == value['object']['chara']: + heroassist = 1 + playerArr[index1]['totalassistDetail'][index3]['num'] = playerArr[index1]['totalassistDetail'][index3]['num']+1 + break + if heroassist == 0: + newheroassist = {'chara':value['object']['chara'],'num':1} + playerArr[index1]['totalassistDetail'].append(newheroassist) + heroisexsit = 0 + for index2, value2 in enumerate(value1['heros']): + if value2['chara'] == assist[assistplayer]['hero']: + heroisexsit = 1 + playerArr[index1]['heros'][index2]['assist'] = playerArr[index1]['heros'][index2]['assist']+1 + heroassist = 0 + for index4 , value4 in enumerate(value1['heros']['assistDetail']): + if value4['chara'] == value['object']['chara']: + heroassist = 1 + playerArr[index1]['heros'][index2]['assistDetail'][index4]['num'] = playerArr[index1]['heros'][index2]['assistDetail'][index4]['num']+1 + break + if heroassist == 0: + newheroassist = {'chara':value['object']['chara'],'num':1} + playerArr[index1]['heros'][index2]['assistDetail'].append(newheroassist) + break + if heroisexsit == 0: + newhero = deepcopy(heros) + newhero['chara'] = assist[assistplayer]['hero'] + newhero['assist'] = 1 + newheroassist = {'chara':value['object']['chara'],'num':1} + newhero['assistDetail'].append(newheroassist) + playerArr[index1]['totalhero'] = playerArr[index1]['totalhero'] + 1 + playerArr[index1]['heros'].append(newhero) + if value1['name'] == value['object']['player']: + playerArr[index1]['totaldie'] = playerArr[index1]['totaldie'] + 1 + playerArr[index1]['totalassist die'] = playerArr[index1]['totalassist die'] + totalassistdie + if value['critical kill'] == 'Y': + playerArr[index1]['totalcritical die'] =playerArr[index1]['totalcritical die'] + 1 + herodie = 0 + for index3 , value3 in enumerate(value1['totaldieDetail']): + if value3['chara'] == value['subject']['chara']: + herodie = 1 + playerArr[index1]['totaldieDetail'][index3]['num'] = playerArr[index1]['totaldieDetail'][index3]['num']+1 + break + if herodie == 0: + newherodie = {'chara':value['object']['chara'],'num':1} + playerArr[index1]['totaldieDetail'].append(newherodie) + heroisexsit = 0 + for index2, value2 in enumerate(value1['heros']): + if value2['chara'] == value['object']['chara']: + heroisexsit = 1 + playerArr[index1]['heros'][index2]['die'] = playerArr[index1]['heros'][index2]['die'] + 1 + playerArr[index1]['heros'][index2]['assist die'] = playerArr[index1]['heros'][index2]['assist die'] + totalassistdie + if value['critical kill'] == 'Y': + playerArr[index1]['heros'][index2]['critical die'] = playerArr[index1]['heros'][index2]['critical die'] + 1 + herodie = 0 + for index4 , value4 in enumerate(value1['heros']['dieDetail']): + if value4['chara'] == value['subject']['chara']: + herodie = 1 + playerArr[index1]['heros'][index2]['dieDetail'][index4]['num'] = playerArr[index1]['heros'][index2]['dieDetail'][index4]['num'] + 1 + break + if herodie == 0: + newherodie = {'chara':value['object']['chara'],'num':1} + playerArr[index1]['heros'][index2]['dieDetail'].append(newherodie) + break + if heroisexsit == 0: + newhero = deepcopy(heros) + newhero['chara'] = value['object']['chara'] + newhero['die'] = 1 + newherodie = {'chara':value['subject']['chara'],'num':1} + newhero['dieDetail'].append(newherodie) + newhero['assist die'] = totalassistdie + playerArr[index1]['totalhero'] = playerArr[index1]['totalhero'] + 1 + if value['critical kill'] == 'Y': + newhero['critical die'] = 1 + playerArr[index1]['heros'].append(newhero) + + def get_player_basic_resurrects(self,start_time=0,end_time=0,data=0): + ''' + 获取在原数据基础上返回固定时间段内复活相关数据粗加工 + Author: + ForYou + Args: + start_time开始时间end_time结束时间data原数据 + Returns: + 同get_init_plarer_basic_data()返回值 + ''' + if data == 0: + playerArr = self.playerArr + else: + playerArr = data + if end_time == 0 and start_time == 0: + resurrects = self.resurrects + else: + resurrects = self.get_resurrects(start_time,end_time) + heros = {'chara':'','Eliminate':0,'assist':0,'Resurrect':0,'die':0,'Suicide':0,'Resurrected':0,'critical die':0,'critical kill':0,'assist die':0,'EliminateDetail':[],'assistDetail':[],'dieDetail':[]} + for index, value in enumerate(resurrects): + for index1, value1 in enumerate(playerArr): + if value1['name'] == value['subject']['player']: + playerArr[index1]['totalResurrect'] = playerArr[index1]['totalResurrect'] + 1 + heroisexsit = 0 + for index2, value2 in enumerate(value1['heros']): + if value2['chara'] == value['subject']['chara']: + heroisexsit = 1 + playerArr[index1]['heros'][index2]['Resurrect'] = playerArr[index1]['heros'][index2]['Resurrect'] + 1 + break + if heroisexsit == 0: + newhero = deepcopy(heros) + newhero['chara'] = value['subject']['chara'] + newhero['Resurrect'] = 1 + playerArr[index1]['totalhero'] = playerArr[index1]['totalhero'] + 1 + playerArr[index1]['heros'].append(newhero) + if value1['name'] == value['object']['player']: + playerArr[index1]['totalResurrected'] = playerArr[index1]['totalResurrected'] + 1 + heroisexsit = 0 + for index2, value2 in enumerate(value1['heros']): + if value2['chara'] == value['object']['chara']: + heroisexsit = 1 + playerArr[index1]['heros'][index2]['Resurrected'] = playerArr[index1]['heros'][index2]['Resurrected']+1 + break + if heroisexsit == 0: + newhero = deepcopy(heros) + newhero['chara'] = value['object']['chara'] + newhero['Resurrected'] = 1 + playerArr[index1]['totalhero'] = playerArr[index1]['totalhero'] + 1 + playerArr[index1]['heros'].append(newhero) + + def get_player_basic_suicides(self,start_time=0,end_time=0,data=0): + ''' + 获取在原数据基础上返回固定时间段内自杀相关数据粗加工 + Author: + ForYou + Args: + start_time开始时间end_time结束时间data原数据 + Returns: + 同get_init_plarer_basic_data()返回值 + ''' + if data == 0: + playerArr = self.playerArr + else: + playerArr = data + if end_time == 0 and start_time == 0: + suicides = self.suicides + else: + suicides = self.get_suicides(start_time,end_time) + heros = {'chara':'','Eliminate':0,'assist':0,'Resurrect':0,'die':0,'Suicide':0,'Resurrected':0,'critical die':0,'critical kill':0,'assist die':0,'EliminateDetail':[],'assistDetail':[],'dieDetail':[]} + for index, value in enumerate(suicides): + for index1, value1 in enumerate(playerArr): + if value1['name'] == value['object']['player']: + playerArr[index1]['totalSuicide'] = playerArr[index1]['totalSuicide']+1 + heroisexsit = 0 + for index2, value2 in enumerate(value1['heros']): + if value2['chara'] == value['object']['chara']: + heroisexsit = 1 + playerArr[index1]['heros'][index2]['Suicide'] = playerArr[index1]['heros'][index2]['Suicide'] + 1 + break + if heroisexsit == 0: + newhero = deepcopy(heros) + newhero['chara'] = value['object']['chara'] + newhero['Suicide'] = 1 + playerArr[index1]['totalhero'] = playerArr[index1]['totalhero']+1 + playerArr[index1]['heros'].append(newhero) + + def get_player_basic_demechs(self,start_time=0,end_time=0,data=0): + ''' + 获取在原数据基础上返回固定时间段内机甲相关数据粗加工 + Author: + ForYou + Args: + start_time开始时间end_time结束时间data原数据 + Returns: + 同get_init_plarer_basic_data()返回值 + ''' + if data == 0: + playerArr = self.playerArr + else: + playerArr = data + if end_time == 0 and start_time == 0: + demechs = self.demechs + else: + demechs = self.get_suicides(start_time,end_time) + heros = {'chara':'','Eliminate':0,'assist':0,'Resurrect':0,'die':0,'Suicide':0,'Resurrected':0,'critical die':0,'critical kill':0,'assist die':0,'EliminateDetail':[],'assistDetail':[],'dieDetail':[]} + for index, value in enumerate(demechs): + for index1, value1 in enumerate(playerArr): + if value1['name'] == value['subject']['player']: + playerArr[index1]['totalDemech'] = playerArr[index1]['totalDemech']+1 + if value['critical kill'] == 'Y': + playerArr[index1]['totalDemechcritical kill'] = playerArr[index1]['totalDemechcritical kill']+1 + heroisexsit = 0 + for index2, value2 in enumerate(value1['heros']): + if value2['chara'] == value['subject']['chara']: + heroisexsit = 1 + playerArr[index1]['heros'][index2]['Demech'] = playerArr[index1]['heros'][index2]['Demech'] + 1 + if value['critical kill'] == 'Y': + playerArr[index1]['heros'][index2]['Demechcritical kill'] = playerArr[index1]['heros'][index2]['Demechcritical kill']+1 + break + if heroisexsit == 0: + newhero = deepcopy(heros) + newhero['chara'] = value['subject']['chara'] + newhero['Demech'] = 1 + playerArr[index1]['totalhero'] = playerArr[index1]['totalhero']+1 + if value['critical kill'] == 'Y': + newhero['Demechcritical kill'] = 1 + playerArr[index1]['heros'].append(newhero) + totalDemechassistdie = 0 + for assistplayer in value['assist']: + if value1['name'] == assist[assistplayer]['player']: + totalDemechassistdie = totalDemechassistdie + 1 + playerArr[index1]['totalDemechassist'] = playerArr[index1]['totalDemechassist'] + 1 + heroisexsit = 0 + for index2, value2 in enumerate(value1['heros']): + if value2['chara'] == assist[assistplayer]['hero']: + heroisexsit = 1 + playerArr[index1]['heros'][index2]['Demechassist'] = playerArr[index1]['heros'][index2]['Demechassist'] + 1 + break + if heroisexsit == 0: + newhero = deepcopy(heros) + newhero['chara'] = assist[assistplayer]['hero'] + newhero['Demechassist'] = 1 + playerArr[index1]['totalhero'] = playerArr[index1]['totalhero'] + 1 + playerArr[index1]['heros'].append(newhero) + if value1['name'] == value['object']['player']: + playerArr[index1]['totalDemechdie'] = playerArr[index1]['totalDemechdie'] + 1 + playerArr[index1]['totalDemechassist die'] = playerArr[index1]['totalDemechassist die']+totalDemechassistdie + if value['critical kill'] == 'Y': + playerArr[index1]['totalDemechcritical die'] = playerArr[index1]['totalDemechcritical die'] + 1 + heroisexsit = 0 + for index2, value2 in enumerate(value1['heros']): + if value2['chara'] == value['object']['chara']: + heroisexsit = 1 + playerArr[index1]['heros'][index2]['Demechdie'] = playerArr[index1]['heros'][index2]['Demechdie'] + 1 + playerArr[index1]['heros'][index2]['Demechassist die'] = playerArr[index1]['heros'][index2]['Demechassist die'] + totalDemechassistdie + if value['critical kill'] == 'Y': + playerArr[index1]['heros'][index2]['Demechcritical die'] =playerArr[index1]['heros'][index2]['Demechcritical die'] + 1 + break + if heroisexsit == 0: + newhero = deepcopy(heros) + newhero['chara'] = value['object']['chara'] + newhero['Demechdie'] = 1 + newhero['Demechassist die'] = totalDemechassistdie + playerArr[index1]['totalhero'] = playerArr[index1]['totalhero'] + 1 + if value['critical kill'] == 'Y': + newhero['Demechcritical die'] = 1 + playerArr[index1]['heros'].append(newhero) From bc9f09bdb100fcd88adfc3ebb55216bb4e1180c5 Mon Sep 17 00:00:00 2001 From: ForeverYou <446529127@qq.com> Date: Thu, 26 Jul 2018 22:17:34 +0800 Subject: [PATCH 27/57] add some notes and modify variable name --- ora/stats/single_match_stats.py | 325 ++++++++++++++++++-------------- 1 file changed, 186 insertions(+), 139 deletions(-) diff --git a/ora/stats/single_match_stats.py b/ora/stats/single_match_stats.py index c927681..6734528 100644 --- a/ora/stats/single_match_stats.py +++ b/ora/stats/single_match_stats.py @@ -3,6 +3,7 @@ import sys import zipfile import json +from copy import deepcopy sys.path.append('../utils') from utils import stats @@ -45,7 +46,7 @@ def __init__(self, zip_path): self.demechs = self.get_demechs() self.teamfight_separations = self.get_teamfight_separations() self.teamfight = self.get_all_teamfight() - self.playerArr = self.get_init_plarer_basic_data() + self.player_arr = self.get_init_player_basic_data() def get_eliminations(self, start_time=0, end_time=0): """Get all eliminatins in a given time range. @@ -366,7 +367,7 @@ def get_count_teamfight(self): """ return len(self.teamfight) - def get_init_plarer_basic_data(self): + def get_init_player_basic_data(self): ''' 根据data_sheet2初始化各个选手基本数据 Author: @@ -374,7 +375,7 @@ def get_init_plarer_basic_data(self): Args: None Returns: - playerArr:以选手player为单位的数组,共12个,每个player中包括以下内容: + player_arr:以选手player为单位的数组,共12个,每个player中包括以下内容: team:队伍名称 team_status:队伍进攻或防守 index:编号从左往右 @@ -439,7 +440,7 @@ def get_init_plarer_basic_data(self): ''' heros = {'chara':'','Eliminate':0,'assist':0,'Resurrect':0,'die':0,'Suicide':0,'Resurrected':0,'critical die':0,'critical kill':0,'assist die':0,'EliminateDetail':[],'assistDetail':[],'dieDetail':[]} total = {'totalhero':1,'totalEliminate':0,'totalassist':0,'totalResurrect':0,'totaldie':0,'totalSuicide':0,'totalResurrected':0,'totalcritical die':0,'totalcritical kill':0,'totalassist die':0,'totalDemech':0,'totalDemechassist':0,'totalDemechdie':0,'totalDemechcritical die':0,'totalDemechcritical kill':0,'totalDemechassist die':0,'totalEliminateDetail':[],'totalassistDetail':[],'totaldieDetail':[]} - playerArr = [] + player_arr = [] for teamindex, teamvalue in enumerate(self.data_sheet2): for player in teamvalue['players']: hero = player['starting lineup'] @@ -450,8 +451,8 @@ def get_init_plarer_basic_data(self): player['team_status'] = teamvalue['team_status'] for key in total: player[key] = total[key] - playerArr.append(player) - return playerArr + player_arr.append(player) + return player_arr def get_resurrects(self, start_time=0, end_time=0): """Get all resurrects in a given time range. @@ -554,139 +555,167 @@ def get_player_basic_eliminates(self,start_time=0,end_time=0,data=0): Args: start_time开始时间end_time结束时间data原数据 Returns: - 同get_init_plarer_basic_data()返回值 + 同get_init_player_basic_data()返回值 ''' + #提供了data原有数据就在原有数据累加,没有提供则在初始化的选手信息self.player_arr上添加 if data == 0: - playerArr = self.playerArr + player_arr = self.player_arr else: - playerArr = data + player_arr = data + #提供了开始和结束时间则取时间内的击杀事件加工,没有提供则默认全部击杀事件 if end_time == 0 and start_time == 0: eliminations = self.elims else: eliminations = self.get_eliminations(start_time,end_time) heros = {'chara':'','Eliminate':0,'assist':0,'Resurrect':0,'die':0,'Suicide':0,'Resurrected':0,'critical die':0,'critical kill':0,'assist die':0,'EliminateDetail':[],'assistDetail':[],'dieDetail':[]} + #遍历提供的击杀事件,从其中提取信息 for index, value in enumerate(eliminations): - for index1, value1 in enumerate(playerArr): - if value1['name'] == value['subject']['player']: - playerArr[index1]['totalEliminate'] = playerArr[index1]['totalEliminate']+1 + #遍历选手列表,找到信息对应的选手,循环中主要处理三类信息 1:击杀者 2:助攻 3:被击杀者 + for playerindex, playervalue in enumerate(player_arr): + # 1:击杀者相关信息(1a 总击杀 1b爆头总击杀 1c 总击杀明细 1d 使用英雄击杀相关) + if playervalue['name'] == value['subject']['player']: + # 1a 总击杀 + player_arr[playerindex]['totalEliminate'] +=1 + # 1b 爆头总击杀 if value['critical kill'] =='Y': - playerArr[index1]['totalcritical kill'] = playerArr[index1]['totalcritical kill']+1 - heroEliminate = 0 - for index3 , value3 in enumerate(value1['totalEliminateDetail']): - if value3['chara'] == value['object']['chara']: - heroEliminate = 1 - playerArr[index1]['totalEliminateDetail'][index3]['num'] = playerArr[index1]['totalEliminateDetail'][index3]['num']+1 + player_arr[playerindex]['totalcritical kill'] += 1 + # 1c 总击杀明细 (敌方哪个英雄 几次) + hero_eliminate = 0 + for obj_hero_index , obj_hero_value in enumerate(playervalue['totalEliminateDetail']): + if obj_hero_value['chara'] == value['object']['chara']: + hero_eliminate = 1 + player_arr[playerindex]['totalEliminateDetail'][obj_hero_index]['num'] += 1 break - if heroEliminate == 0: - newheroEliminate = {'chara':value['object']['chara'],'num':1} - playerArr[index1]['totalEliminateDetail'].append(newheroEliminate) + # 击杀明细列表中 无此英雄则新增 + if hero_eliminate == 0: + newhero_eliminate = {'chara':value['object']['chara'],'num':1} + player_arr[playerindex]['totalEliminateDetail'].append(newhero_eliminate) + # 1d 使用英雄击杀相关 heroisexsit = 0 - for index2, value2 in enumerate(value1['heros']): - if value2['chara'] == value['subject']['chara']: + #遍历已使用英雄 + for used_hero_index, used_hero_value in enumerate(playervalue['heros']): + #和选手总击杀类似,这里处理选手不同英雄的击杀数据 + if used_hero_value['chara'] == value['subject']['chara']: heroisexsit = 1 - playerArr[index1]['heros'][index2]['Eliminate'] = playerArr[index1]['heros'][index2]['Eliminate']+1 + player_arr[playerindex]['heros'][used_hero_index]['Eliminate'] += 1 if value['critical kill'] == 'Y': - playerArr[index1]['heros'][index2]['critical kill'] = playerArr[index1]['heros'][index2]['critical kill']+1 - heroEliminate = 0 - for index4 , value4 in enumerate(value1['heros']['EliminateDetail']): - if value4['chara'] == value['object']['chara']: - heroEliminate = 1 - playerArr[index1]['heros'][index2]['EliminateDetail'][index4]['num'] = playerArr[index1]['heros'][index2]['EliminateDetail'][index4]['num']+1 + player_arr[playerindex]['heros'][used_hero_index]['critical kill'] += 1 + hero_eliminate = 0 + #击杀敌方英雄详情 + for hero_action_detail_index , hero_action_detail_value in enumerate(playervalue['heros']['EliminateDetail']): + if hero_action_detail_value['chara'] == value['object']['chara']: + hero_eliminate = 1 + player_arr[playerindex]['heros'][used_hero_index]['EliminateDetail'][hero_action_detail_index]['num'] += 1 break - if heroEliminate == 0: - newheroEliminate = {'chara':value['object']['chara'],'num':1} - playerArr[index1]['heros'][index2]['EliminateDetail'].append(newheroEliminate) + if hero_eliminate == 0: + newhero_eliminate = {'chara':value['object']['chara'],'num':1} + player_arr[playerindex]['heros'][used_hero_index]['EliminateDetail'].append(newhero_eliminate) break + #未使用过此英雄则新增 if heroisexsit == 0: newhero = deepcopy(heros) newhero['chara'] = value['subject']['chara'] newhero['Eliminate'] = 1 - newheroEliminate = {'chara':value['object']['chara'],'num':1} - newhero['EliminateDetail'].append(newheroEliminate) - playerArr[index1]['totalhero'] = playerArr[index1]['totalhero'] + 1 + newhero_eliminate = {'chara':value['object']['chara'],'num':1} + newhero['EliminateDetail'].append(newhero_eliminate) + player_arr[playerindex]['totalhero'] += 1 if value['critical kill'] == 'Y': newhero['critical kill'] = 1 - playerArr[index1]['heros'].append(newhero) - totalassistdie = 0 + player_arr[playerindex]['heros'].append(newhero) + # 2:助攻相关信息 total_assist_die字段记录这次击杀事件造成几个助攻,累加在选手的assist die和totalassist die上,assist die/die 可以看出敌方队伍集火目标 + total_assist_die = 0 for assistplayer in value['assist']: - if value1['name'] == assist[assistplayer]['player']: - totalassistdie = totalassistdie + 1 - playerArr[index1]['totalassist'] = playerArr[index1]['totalassist']+1 + #遍历助攻列表 处理选手的 2a总助攻 2b总助攻明细 2c不同英雄助攻信息 + if playervalue['name'] == assist[assistplayer]['player']: + total_assist_die += 1 + # 2a 总助攻 + player_arr[playerindex]['totalassist'] += 1 + # 2b 总助攻明细 heroassist = 0 - for index3 , value3 in enumerate(value1['totalassistDetail']): - if value3['chara'] == value['object']['chara']: + for obj_hero_index , obj_hero_value in enumerate(playervalue['totalassistDetail']): + if obj_hero_value['chara'] == value['object']['chara']: heroassist = 1 - playerArr[index1]['totalassistDetail'][index3]['num'] = playerArr[index1]['totalassistDetail'][index3]['num']+1 + player_arr[playerindex]['totalassistDetail'][obj_hero_index]['num'] += 1 break if heroassist == 0: newheroassist = {'chara':value['object']['chara'],'num':1} - playerArr[index1]['totalassistDetail'].append(newheroassist) + player_arr[playerindex]['totalassistDetail'].append(newheroassist) + # 2c 遍历英雄更新助攻信息 heroisexsit = 0 - for index2, value2 in enumerate(value1['heros']): - if value2['chara'] == assist[assistplayer]['hero']: + for used_hero_index, used_hero_value in enumerate(playervalue['heros']): + if used_hero_value['chara'] == assist[assistplayer]['hero']: heroisexsit = 1 - playerArr[index1]['heros'][index2]['assist'] = playerArr[index1]['heros'][index2]['assist']+1 + player_arr[playerindex]['heros'][used_hero_index]['assist'] += 1 + #助攻击杀敌方英雄信息 heroassist = 0 - for index4 , value4 in enumerate(value1['heros']['assistDetail']): - if value4['chara'] == value['object']['chara']: + for hero_action_detail_index , hero_action_detail_value in enumerate(playervalue['heros']['assistDetail']): + if hero_action_detail_value['chara'] == value['object']['chara']: heroassist = 1 - playerArr[index1]['heros'][index2]['assistDetail'][index4]['num'] = playerArr[index1]['heros'][index2]['assistDetail'][index4]['num']+1 + player_arr[playerindex]['heros'][used_hero_index]['assistDetail'][hero_action_detail_index]['num'] += 1 break if heroassist == 0: newheroassist = {'chara':value['object']['chara'],'num':1} - playerArr[index1]['heros'][index2]['assistDetail'].append(newheroassist) + player_arr[playerindex]['heros'][used_hero_index]['assistDetail'].append(newheroassist) break + #使用英雄不存在则新增 if heroisexsit == 0: newhero = deepcopy(heros) newhero['chara'] = assist[assistplayer]['hero'] newhero['assist'] = 1 newheroassist = {'chara':value['object']['chara'],'num':1} newhero['assistDetail'].append(newheroassist) - playerArr[index1]['totalhero'] = playerArr[index1]['totalhero'] + 1 - playerArr[index1]['heros'].append(newhero) - if value1['name'] == value['object']['player']: - playerArr[index1]['totaldie'] = playerArr[index1]['totaldie'] + 1 - playerArr[index1]['totalassist die'] = playerArr[index1]['totalassist die'] + totalassistdie + player_arr[playerindex]['totalhero'] += 1 + player_arr[playerindex]['heros'].append(newhero) + # 3:被击杀者信息(3a 总死亡 3b总被助攻 3c 总被爆头击杀 3d 被击杀明细 3e 被击杀英雄相关) + if playervalue['name'] == value['object']['player']: + #3a 总死亡 + player_arr[playerindex]['totaldie'] += 1 + #3b 总被助攻数 + player_arr[playerindex]['totalassist die'] += total_assist_die + #3c 总被爆头击杀数 if value['critical kill'] == 'Y': - playerArr[index1]['totalcritical die'] =playerArr[index1]['totalcritical die'] + 1 + player_arr[playerindex]['totalcritical die'] += 1 + #3d 被击杀明细 (造成击杀的敌方英雄构成及次数) herodie = 0 - for index3 , value3 in enumerate(value1['totaldieDetail']): - if value3['chara'] == value['subject']['chara']: + for obj_hero_index , obj_hero_value in enumerate(playervalue['totaldieDetail']): + if obj_hero_value['chara'] == value['subject']['chara']: herodie = 1 - playerArr[index1]['totaldieDetail'][index3]['num'] = playerArr[index1]['totaldieDetail'][index3]['num']+1 + player_arr[playerindex]['totaldieDetail'][obj_hero_index]['num'] += 1 break if herodie == 0: - newherodie = {'chara':value['object']['chara'],'num':1} - playerArr[index1]['totaldieDetail'].append(newherodie) + newherodie = {'chara':value['subject']['chara'],'num':1} + player_arr[playerindex]['totaldieDetail'].append(newherodie) + #3e 被击杀英雄(死亡构成) 数据结构与总数据类似 heroisexsit = 0 - for index2, value2 in enumerate(value1['heros']): - if value2['chara'] == value['object']['chara']: + for used_hero_index, used_hero_value in enumerate(playervalue['heros']): + if used_hero_value['chara'] == value['object']['chara']: heroisexsit = 1 - playerArr[index1]['heros'][index2]['die'] = playerArr[index1]['heros'][index2]['die'] + 1 - playerArr[index1]['heros'][index2]['assist die'] = playerArr[index1]['heros'][index2]['assist die'] + totalassistdie + player_arr[playerindex]['heros'][used_hero_index]['die'] += 1 + player_arr[playerindex]['heros'][used_hero_index]['assist die'] += total_assist_die if value['critical kill'] == 'Y': - playerArr[index1]['heros'][index2]['critical die'] = playerArr[index1]['heros'][index2]['critical die'] + 1 + player_arr[playerindex]['heros'][used_hero_index]['critical die'] += 1 herodie = 0 - for index4 , value4 in enumerate(value1['heros']['dieDetail']): - if value4['chara'] == value['subject']['chara']: + for hero_action_detail_index , hero_action_detail_value in enumerate(playervalue['heros']['dieDetail']): + if hero_action_detail_value['chara'] == value['subject']['chara']: herodie = 1 - playerArr[index1]['heros'][index2]['dieDetail'][index4]['num'] = playerArr[index1]['heros'][index2]['dieDetail'][index4]['num'] + 1 + player_arr[playerindex]['heros'][used_hero_index]['dieDetail'][hero_action_detail_index]['num'] += 1 break if herodie == 0: - newherodie = {'chara':value['object']['chara'],'num':1} - playerArr[index1]['heros'][index2]['dieDetail'].append(newherodie) + newherodie = {'chara':value['subject']['chara'],'num':1} + player_arr[playerindex]['heros'][used_hero_index]['dieDetail'].append(newherodie) break + #被击杀的英雄不存在则新增 if heroisexsit == 0: newhero = deepcopy(heros) newhero['chara'] = value['object']['chara'] newhero['die'] = 1 newherodie = {'chara':value['subject']['chara'],'num':1} newhero['dieDetail'].append(newherodie) - newhero['assist die'] = totalassistdie - playerArr[index1]['totalhero'] = playerArr[index1]['totalhero'] + 1 + newhero['assist die'] = total_assist_die + player_arr[playerindex]['totalhero'] += 1 if value['critical kill'] == 'Y': newhero['critical die'] = 1 - playerArr[index1]['heros'].append(newhero) + player_arr[playerindex]['heros'].append(newhero) def get_player_basic_resurrects(self,start_time=0,end_time=0,data=0): ''' @@ -696,47 +725,53 @@ def get_player_basic_resurrects(self,start_time=0,end_time=0,data=0): Args: start_time开始时间end_time结束时间data原数据 Returns: - 同get_init_plarer_basic_data()返回值 + 同get_init_player_basic_data()返回值 ''' + #提供了data原有数据就在原有数据累加,没有提供则在初始化的选手信息self.player_arr上添加 if data == 0: - playerArr = self.playerArr + player_arr = self.player_arr else: - playerArr = data + player_arr = data + #提供了开始和结束时间则取时间内的复活事件加工,没有提供则默认全部复活事件 if end_time == 0 and start_time == 0: resurrects = self.resurrects else: resurrects = self.get_resurrects(start_time,end_time) heros = {'chara':'','Eliminate':0,'assist':0,'Resurrect':0,'die':0,'Suicide':0,'Resurrected':0,'critical die':0,'critical kill':0,'assist die':0,'EliminateDetail':[],'assistDetail':[],'dieDetail':[]} + #遍历提供的复活事件 for index, value in enumerate(resurrects): - for index1, value1 in enumerate(playerArr): - if value1['name'] == value['subject']['player']: - playerArr[index1]['totalResurrect'] = playerArr[index1]['totalResurrect'] + 1 + #遍历选手列表 更新 1 复活数据 2 被复活数据 + for playerindex, playervalue in enumerate(player_arr): + #复活数据 和击杀数据一样做了英雄分组 1是为了保持数据格式的一致性,2是防止出另外具有复活技能的英雄 + if playervalue['name'] == value['subject']['player']: + player_arr[playerindex]['totalResurrect'] += 1 heroisexsit = 0 - for index2, value2 in enumerate(value1['heros']): - if value2['chara'] == value['subject']['chara']: + for used_hero_index, used_hero_value in enumerate(playervalue['heros']): + if used_hero_value['chara'] == value['subject']['chara']: heroisexsit = 1 - playerArr[index1]['heros'][index2]['Resurrect'] = playerArr[index1]['heros'][index2]['Resurrect'] + 1 + player_arr[playerindex]['heros'][used_hero_index]['Resurrect'] += 1 break if heroisexsit == 0: newhero = deepcopy(heros) newhero['chara'] = value['subject']['chara'] newhero['Resurrect'] = 1 - playerArr[index1]['totalhero'] = playerArr[index1]['totalhero'] + 1 - playerArr[index1]['heros'].append(newhero) - if value1['name'] == value['object']['player']: - playerArr[index1]['totalResurrected'] = playerArr[index1]['totalResurrected'] + 1 + player_arr[playerindex]['totalhero'] += 1 + player_arr[playerindex]['heros'].append(newhero) + #被复活数据 + if playervalue['name'] == value['object']['player']: + player_arr[playerindex]['totalResurrected'] += 1 heroisexsit = 0 - for index2, value2 in enumerate(value1['heros']): - if value2['chara'] == value['object']['chara']: + for used_hero_index, used_hero_value in enumerate(playervalue['heros']): + if used_hero_value['chara'] == value['object']['chara']: heroisexsit = 1 - playerArr[index1]['heros'][index2]['Resurrected'] = playerArr[index1]['heros'][index2]['Resurrected']+1 + player_arr[playerindex]['heros'][used_hero_index]['Resurrected'] += 1 break if heroisexsit == 0: newhero = deepcopy(heros) newhero['chara'] = value['object']['chara'] newhero['Resurrected'] = 1 - playerArr[index1]['totalhero'] = playerArr[index1]['totalhero'] + 1 - playerArr[index1]['heros'].append(newhero) + player_arr[playerindex]['totalhero'] += 1 + player_arr[playerindex]['heros'].append(newhero) def get_player_basic_suicides(self,start_time=0,end_time=0,data=0): ''' @@ -746,33 +781,37 @@ def get_player_basic_suicides(self,start_time=0,end_time=0,data=0): Args: start_time开始时间end_time结束时间data原数据 Returns: - 同get_init_plarer_basic_data()返回值 + 同get_init_player_basic_data()返回值 ''' + #提供了data原有数据就在原有数据累加,没有提供则在初始化的选手信息self.player_arr上添加 if data == 0: - playerArr = self.playerArr + player_arr = self.player_arr else: - playerArr = data + player_arr = data + #提供了开始和结束时间则取时间内的自杀事件加工,没有提供则默认全部自杀事件 if end_time == 0 and start_time == 0: suicides = self.suicides else: suicides = self.get_suicides(start_time,end_time) heros = {'chara':'','Eliminate':0,'assist':0,'Resurrect':0,'die':0,'Suicide':0,'Resurrected':0,'critical die':0,'critical kill':0,'assist die':0,'EliminateDetail':[],'assistDetail':[],'dieDetail':[]} + #遍历提供的自杀事件 for index, value in enumerate(suicides): - for index1, value1 in enumerate(playerArr): - if value1['name'] == value['object']['player']: - playerArr[index1]['totalSuicide'] = playerArr[index1]['totalSuicide']+1 + #遍历选手列表 更新自杀数据 + for playerindex, playervalue in enumerate(player_arr): + if playervalue['name'] == value['object']['player']: + player_arr[playerindex]['totalSuicide'] += 1 heroisexsit = 0 - for index2, value2 in enumerate(value1['heros']): - if value2['chara'] == value['object']['chara']: + for used_hero_index, used_hero_value in enumerate(playervalue['heros']): + if used_hero_value['chara'] == value['object']['chara']: heroisexsit = 1 - playerArr[index1]['heros'][index2]['Suicide'] = playerArr[index1]['heros'][index2]['Suicide'] + 1 + player_arr[playerindex]['heros'][used_hero_index]['Suicide'] += 1 break if heroisexsit == 0: newhero = deepcopy(heros) newhero['chara'] = value['object']['chara'] newhero['Suicide'] = 1 - playerArr[index1]['totalhero'] = playerArr[index1]['totalhero']+1 - playerArr[index1]['heros'].append(newhero) + player_arr[playerindex]['totalhero'] += 1 + player_arr[playerindex]['heros'].append(newhero) def get_player_basic_demechs(self,start_time=0,end_time=0,data=0): ''' @@ -782,76 +821,84 @@ def get_player_basic_demechs(self,start_time=0,end_time=0,data=0): Args: start_time开始时间end_time结束时间data原数据 Returns: - 同get_init_plarer_basic_data()返回值 + 同get_init_player_basic_data()返回值 ''' + #提供了data原有数据就在原有数据累加,没有提供则在初始化的选手信息self.player_arr上添加 if data == 0: - playerArr = self.playerArr + player_arr = self.player_arr else: - playerArr = data + player_arr = data + #提供了开始和结束时间则取时间内的击杀机甲事件加工,没有提供则默认全部击杀机甲事件 if end_time == 0 and start_time == 0: demechs = self.demechs else: demechs = self.get_suicides(start_time,end_time) heros = {'chara':'','Eliminate':0,'assist':0,'Resurrect':0,'die':0,'Suicide':0,'Resurrected':0,'critical die':0,'critical kill':0,'assist die':0,'EliminateDetail':[],'assistDetail':[],'dieDetail':[]} + #遍历提供的击杀机甲事件 此函数与击杀事件get_player_basic_eliminates类似,注释会从简 for index, value in enumerate(demechs): - for index1, value1 in enumerate(playerArr): - if value1['name'] == value['subject']['player']: - playerArr[index1]['totalDemech'] = playerArr[index1]['totalDemech']+1 + #遍历选手列表 处理选手的 1 拆机甲 2 助攻拆机甲 3 被拆机甲 + for playerindex, playervalue in enumerate(player_arr): + # 1:拆机甲相关数据 拆机甲总数 爆头拆机甲总数 不同英雄拆机甲数据 + if playervalue['name'] == value['subject']['player']: + player_arr[playerindex]['totalDemech'] += 1 if value['critical kill'] == 'Y': - playerArr[index1]['totalDemechcritical kill'] = playerArr[index1]['totalDemechcritical kill']+1 + player_arr[playerindex]['totalDemechcritical kill'] += 1 heroisexsit = 0 - for index2, value2 in enumerate(value1['heros']): - if value2['chara'] == value['subject']['chara']: + for used_hero_index, used_hero_value in enumerate(playervalue['heros']): + if used_hero_value['chara'] == value['subject']['chara']: heroisexsit = 1 - playerArr[index1]['heros'][index2]['Demech'] = playerArr[index1]['heros'][index2]['Demech'] + 1 + player_arr[playerindex]['heros'][used_hero_index]['Demech'] += 1 if value['critical kill'] == 'Y': - playerArr[index1]['heros'][index2]['Demechcritical kill'] = playerArr[index1]['heros'][index2]['Demechcritical kill']+1 + player_arr[playerindex]['heros'][used_hero_index]['Demechcritical kill'] += 1 break if heroisexsit == 0: newhero = deepcopy(heros) newhero['chara'] = value['subject']['chara'] newhero['Demech'] = 1 - playerArr[index1]['totalhero'] = playerArr[index1]['totalhero']+1 + player_arr[playerindex]['totalhero'] += 1 if value['critical kill'] == 'Y': newhero['Demechcritical kill'] = 1 - playerArr[index1]['heros'].append(newhero) - totalDemechassistdie = 0 + player_arr[playerindex]['heros'].append(newhero) + #2:助攻拆机甲数据 遍历助攻列表 处理选手的 总助攻 不同英雄助攻信息 + total_demech_assistdie = 0 for assistplayer in value['assist']: - if value1['name'] == assist[assistplayer]['player']: - totalDemechassistdie = totalDemechassistdie + 1 - playerArr[index1]['totalDemechassist'] = playerArr[index1]['totalDemechassist'] + 1 + if playervalue['name'] == assist[assistplayer]['player']: + total_demech_assistdie += 1 + player_arr[playerindex]['totalDemechassist'] += 1 heroisexsit = 0 - for index2, value2 in enumerate(value1['heros']): - if value2['chara'] == assist[assistplayer]['hero']: + for used_hero_index, used_hero_value in enumerate(playervalue['heros']): + if used_hero_value['chara'] == assist[assistplayer]['hero']: heroisexsit = 1 - playerArr[index1]['heros'][index2]['Demechassist'] = playerArr[index1]['heros'][index2]['Demechassist'] + 1 + player_arr[playerindex]['heros'][used_hero_index]['Demechassist'] += 1 break if heroisexsit == 0: newhero = deepcopy(heros) newhero['chara'] = assist[assistplayer]['hero'] newhero['Demechassist'] = 1 - playerArr[index1]['totalhero'] = playerArr[index1]['totalhero'] + 1 - playerArr[index1]['heros'].append(newhero) - if value1['name'] == value['object']['player']: - playerArr[index1]['totalDemechdie'] = playerArr[index1]['totalDemechdie'] + 1 - playerArr[index1]['totalDemechassist die'] = playerArr[index1]['totalDemechassist die']+totalDemechassistdie + player_arr[playerindex]['totalhero'] += 1 + player_arr[playerindex]['heros'].append(newhero) + #3:被拆机甲信息(总死亡 总被助攻 总被爆头击杀 被击杀英雄此处专指dva) + if playervalue['name'] == value['object']['player']: + player_arr[playerindex]['totalDemechdie'] += 1 + player_arr[playerindex]['totalDemechassist die'] += total_demech_assistdie if value['critical kill'] == 'Y': - playerArr[index1]['totalDemechcritical die'] = playerArr[index1]['totalDemechcritical die'] + 1 + player_arr[playerindex]['totalDemechcritical die'] += 1 heroisexsit = 0 - for index2, value2 in enumerate(value1['heros']): - if value2['chara'] == value['object']['chara']: + for used_hero_index, used_hero_value in enumerate(playervalue['heros']): + #判断存疑 如果机甲的chara是 meta 这里面需要修改为dva 如果不是meta则不需要修改 + if used_hero_value['chara'] == value['object']['chara']: heroisexsit = 1 - playerArr[index1]['heros'][index2]['Demechdie'] = playerArr[index1]['heros'][index2]['Demechdie'] + 1 - playerArr[index1]['heros'][index2]['Demechassist die'] = playerArr[index1]['heros'][index2]['Demechassist die'] + totalDemechassistdie + player_arr[playerindex]['heros'][used_hero_index]['Demechdie'] += 1 + player_arr[playerindex]['heros'][used_hero_index]['Demechassist die'] += total_demech_assistdie if value['critical kill'] == 'Y': - playerArr[index1]['heros'][index2]['Demechcritical die'] =playerArr[index1]['heros'][index2]['Demechcritical die'] + 1 + player_arr[playerindex]['heros'][used_hero_index]['Demechcritical die'] += 1 break if heroisexsit == 0: newhero = deepcopy(heros) newhero['chara'] = value['object']['chara'] newhero['Demechdie'] = 1 - newhero['Demechassist die'] = totalDemechassistdie - playerArr[index1]['totalhero'] = playerArr[index1]['totalhero'] + 1 + newhero['Demechassist die'] = total_demech_assistdie + player_arr[playerindex]['totalhero'] += 1 if value['critical kill'] == 'Y': newhero['Demechcritical die'] = 1 - playerArr[index1]['heros'].append(newhero) + player_arr[playerindex]['heros'].append(newhero) From f899a5c3f9115dd450adb33416fd1b844664aa6d Mon Sep 17 00:00:00 2001 From: ForeverYou <446529127@qq.com> Date: Thu, 26 Jul 2018 22:58:20 +0800 Subject: [PATCH 28/57] abstract _get_actions --- ora/stats/single_match_stats.py | 206 ++++++++++++++++---------------- 1 file changed, 104 insertions(+), 102 deletions(-) diff --git a/ora/stats/single_match_stats.py b/ora/stats/single_match_stats.py index 6734528..78f67c5 100644 --- a/ora/stats/single_match_stats.py +++ b/ora/stats/single_match_stats.py @@ -48,21 +48,22 @@ def __init__(self, zip_path): self.teamfight = self.get_all_teamfight() self.player_arr = self.get_init_player_basic_data() - def get_eliminations(self, start_time=0, end_time=0): - """Get all eliminatins in a given time range. - If start_time == 0 and end_time == 0, return full elim list. + def _get_actions(self, action,start_time=0, end_time=0,data=0): + """通过action字段获取相应事件段里面的action列表 Author: - Appcell + ForYou Args: + action:事件类型 start_time: start of the time range given in seconds end_time: end of the time range given in seconds Returns: - A list of all eliminatins in a given time range. + 对应action的事件list """ - res = [] + if data == 0: + res =[] if end_time == 0 and start_time == 0: for event in self.data_sheet1: - if event['action'] == 'Eliminate': + if event['action'] == action: time_arr = event['time'].split(':') curr_time = stats.hms_to_seconds(time_arr[0], time_arr[1], time_arr[2]) @@ -74,11 +75,25 @@ def get_eliminations(self, start_time=0, end_time=0): curr_time = stats.hms_to_seconds(time_arr[0], time_arr[1], time_arr[2]) if curr_time >= start_time and curr_time >= end_time \ - and self.event['action'] == 'Eliminate': + and self.event['action'] == action: event['time'] = curr_time res.append(event) return res + + def get_eliminations(self, start_time=0, end_time=0): + """Get all eliminatins in a given time range. + If start_time == 0 and end_time == 0, return full elim list. + Author: + Appcell + Args: + start_time: start of the time range given in seconds + end_time: end of the time range given in seconds + Returns: + A list of all eliminatins in a given time range. + """ + return self._get_actions('Eliminate',start_time,end_time) + def get_eliminations_incremented(self, data, start_time, end_time): """Append eliminations in given time range onto existed array @@ -91,8 +106,88 @@ def get_eliminations_incremented(self, data, start_time, end_time): Returns: A list of all eliminatins in a given time range appended to original list. """ - return data.append(self.get_eliminations(start_time, end_time)) + return self._get_actions('Eliminate',start_time,end_time,data) + def get_resurrects(self, start_time=0, end_time=0): + """Get all resurrects in a given time range. + If start_time == 0 and end_time == 0, return full resurrect list. + Author: + ForYou + Args: + start_time: start of the time range given in seconds + end_time: end of the time range given in seconds + Returns: + A list of all resurrects in a given time range. + """ + return self._get_actions('Resurrect',start_time,end_time) + + def get_resurrects_incremented(self, data, start_time, end_time): + """Append resurrects in given time range onto existed array + + Author: + ForYou + Args: + data: list of given resurrects data + start_time: start of the time range given in seconds + end_time: end of the time range given in seconds + Returns: + A list of all resurrects in a given time range appended to original list. + """ + return self._get_actions('Resurrect',start_time,end_time,data) + + def get_suicides(self, start_time=0, end_time=0): + """Get all suicides in a given time range. + If start_time == 0 and end_time == 0, return full suicide list. + Author: + ForYou + Args: + start_time: start of the time range given in seconds + end_time: end of the time range given in seconds + Returns: + A list of all suicides in a given time range. + """ + return self._get_actions('Suicide',start_time,end_time) + + def get_suicides_incremented(self, data, start_time, end_time): + """Append suicides in given time range onto existed array + + Author: + ForYou + Args: + data: list of given suicides data + start_time: start of the time range given in seconds + end_time: end of the time range given in seconds + Returns: + A list of all suicides in a given time range appended to original list. + """ + return self._get_actions('Suicide',start_time,end_time,data) + + def get_demechs(self, start_time=0, end_time=0): + """Get all demechs in a given time range. + If start_time == 0 and end_time == 0, return full demech list. + Author: + ForYou + Args: + start_time: start of the time range given in seconds + end_time: end of the time range given in seconds + Returns: + A list of all demechs in a given time range. + """ + return self._get_actions('Demech',start_time,end_time) + + def get_demechs_incremented(self, data, start_time, end_time): + """Append demechs in given time range onto existed array + + Author: + ForYou + Args: + data: list of given demechs data + start_time: start of the time range given in seconds + end_time: end of the time range given in seconds + Returns: + A list of all demechs in a given time range appended to original list. + """ + return self._get_actions('Demech',start_time,end_time,data) def get_teamfight_index(self, time): """Get index of team-fight happening at given timestamp. @@ -454,99 +549,6 @@ def get_init_player_basic_data(self): player_arr.append(player) return player_arr - def get_resurrects(self, start_time=0, end_time=0): - """Get all resurrects in a given time range. - If start_time == 0 and end_time == 0, return full resurrect list. - Author: - ForYou - Args: - start_time: start of the time range given in seconds - end_time: end of the time range given in seconds - Returns: - A list of all resurrects in a given time range. - """ - res = [] - if end_time == 0 and start_time == 0: - for event in self.data_sheet1: - if event['action'] == 'Resurrect': - time_arr = event['time'].split(':') - curr_time = stats.hms_to_seconds(time_arr[0], - time_arr[1], time_arr[2]) - event['time'] = curr_time - res.append(event) - else: - for event in self.data_sheet1: - time_arr = event['time'].split(':') - curr_time = stats.hms_to_seconds(time_arr[0], - time_arr[1], time_arr[2]) - if curr_time >= start_time and curr_time >= end_time \ - and self.event['action'] == 'Resurrect': - event['time'] = curr_time - res.append(event) - return res - - def get_suicides(self, start_time=0, end_time=0): - """Get all suicides in a given time range. - If start_time == 0 and end_time == 0, return full suicide list. - Author: - ForYou - Args: - start_time: start of the time range given in seconds - end_time: end of the time range given in seconds - Returns: - A list of all suicides in a given time range. - """ - res = [] - if end_time == 0 and start_time == 0: - for event in self.data_sheet1: - if event['action'] == 'Suicide': - time_arr = event['time'].split(':') - curr_time = stats.hms_to_seconds(time_arr[0], - time_arr[1], time_arr[2]) - event['time'] = curr_time - res.append(event) - else: - for event in self.data_sheet1: - time_arr = event['time'].split(':') - curr_time = stats.hms_to_seconds(time_arr[0], - time_arr[1], time_arr[2]) - if curr_time >= start_time and curr_time >= end_time \ - and self.event['action'] == 'Suicide': - event['time'] = curr_time - res.append(event) - return res - - def get_demechs(self, start_time=0, end_time=0): - """Get all demechs in a given time range. - If start_time == 0 and end_time == 0, return full demech list. - Author: - ForYou - Args: - start_time: start of the time range given in seconds - end_time: end of the time range given in seconds - Returns: - A list of all demechs in a given time range. - """ - res = [] - if end_time == 0 and start_time == 0: - for event in self.data_sheet1: - if event['action'] == 'Demech': - time_arr = event['time'].split(':') - curr_time = stats.hms_to_seconds(time_arr[0], - time_arr[1], time_arr[2]) - event['time'] = curr_time - res.append(event) - else: - for event in self.data_sheet1: - time_arr = event['time'].split(':') - curr_time = stats.hms_to_seconds(time_arr[0], - time_arr[1], time_arr[2]) - if curr_time >= start_time and curr_time >= end_time \ - and self.event['action'] == 'Demech': - event['time'] = curr_time - res.append(event) - return res - def get_player_basic_eliminates(self,start_time=0,end_time=0,data=0): ''' 获取在原数据基础上返回固定时间段内击杀相关数据粗加工 From 8ef1dadbf2ee89daa58ee99df0300d428ace3120 Mon Sep 17 00:00:00 2001 From: Appcell Date: Sun, 19 Aug 2018 10:13:26 +0200 Subject: [PATCH 29/57] Update TUTORIAL.md --- TUTORIAL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TUTORIAL.md b/TUTORIAL.md index b0184f9..5f8be5f 100644 --- a/TUTORIAL.md +++ b/TUTORIAL.md @@ -60,7 +60,7 @@ In the prompt Powershell console, input `python main.py`, then you can run the c # Windows 下 Python 运行环境搭建教程 -## 安装Anaconda Python 2.x +## 安装Anaconda Python 3.x 点击 https://www.anaconda.com/download/ , 64位电脑按如下选择: From 5f8baccf238db41364507f851e285231f785686d Mon Sep 17 00:00:00 2001 From: Komorebi Date: Tue, 21 Aug 2018 18:05:13 +0800 Subject: [PATCH 30/57] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E5=88=B0=E6=9C=80?= =?UTF-8?q?=E6=96=B0=E7=89=88ora?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 我做了以下微小的工作 1. 增加了对 game_version 的支持 2. 换了种方式提取argv(原来的太蠢了 3. 将部分特殊的错误提示聚集到一起 --- ora/command_line.py | 162 +++++++++++++++++++++++++------------------- 1 file changed, 92 insertions(+), 70 deletions(-) diff --git a/ora/command_line.py b/ora/command_line.py index 700c940..99235fb 100644 --- a/ora/command_line.py +++ b/ora/command_line.py @@ -4,8 +4,8 @@ from . import overwatch as OW from . import game from . import pool -from json import load from sys import argv +import json def log(*args): @@ -15,30 +15,34 @@ def log(*args): class Program(object): def __init__(self): self.game_instance = None - self.argv = argv + self.argv = argv[:4] + self.msg = self._msg() + self.data = self._get_data_to_dict(argv) - def _get_data(self, key): - """ - Extract key from sys.argv, then delete the key - """ - key += '=' - key_index = len(key) - for i, s in enumerate(self.argv): - if s[:key_index] == key: - string = s[key_index:] - del self.argv[i] - return string - return None - - def _user_input(self): - """ - Retrieving info from user input in command line - """ - # Getting fps - if 'help' in self.argv: - print(""" + def _get_data_to_dict(self, argv): + if 'help' in argv: + print(self.msg.get('help')) + exit(0) + if len(self.argv) < 4: + raise ValueError(self.msg.get('need_help')) + + result = {} + argv = argv[4:] + if argv: + for i, s in enumerate(argv): + if '=' not in s: + raise ValueError('<{}> {}'.format(s, self.msg.get('lack'))) + k, v = s.split('=') + result[k] = v + return result + return result + + @staticmethod + def _msg(): + result = {} + result['help'] = """ Example: - main_cli.exe players=player.txt fps=2 start_time=0 end_time=0 + main_cli.exe version=0 players=player.txt fps=2 start_time=0 end_time=0 Mandatory arguments: Absolute path of video(example: F:/video.mp4) @@ -46,67 +50,77 @@ def _user_input(self): A number representing game type. 0: OWL, 1: Non-OWL Optional: + version=0 OWL stage number(0=preseason, 1, 2, 3, 4) players=players.txt A text file saving info of all 12 players with JSON formatting fps=2 FPS of analyzer (2 by default) start_time=0 Starting time in seconds end_time=0 Ending time in seconds (If both are 0, then the whole video is analyzed) - """) - exit(0) - fps = self._get_data('fps') - info = { - 'fps': 2 if fps is None else fps, - '_player': self._get_data('player'), - 'start_time': self._get_data('start_time') or 0, - 'end_time': self._get_data('end_time') or 0, - } - if len(self.argv) <= 3 or len(self.argv) > 4: - raise ValueError(""" + """ + result['need_help'] = """ Please input with proper amount of arguments. 如需帮助请输入 main_cli.py help - """) - info['video_path'] = self.argv[1] - info['output_path'] = self.argv[2] - info['game_type'] = self.argv[3] + """ + result['lack'] = "optional lack of token '='" + result['json'] = """ + JSON format: + { + "right": { + "players": [ + "player7", + "player8", + "player9", + "player10", + "player11", + "player12" + ], + "team": "Team B" + }, + "left": { + "players": [ + "player1", + "player2", + "player3", + "player4", + "player5", + "player6", + ], + "team": "Team A" + } + } + """ + return result + + def _user_input(self): + """ + Retrieving info from user input in command line + """ + info = { + 'fps': self.data.get('fps', 2), + '_players': self.data.get('players'), + 'start_time': self.data.get('start_time', 0), + 'end_time': self.data.get('end_time', 0), + 'game_version': self.data.get('version', 0), + 'video_path': self.argv[1], + 'output_path': self.argv[2], + 'game_type': self.argv[3] + } return info def info(self): info = self._user_input() - player_path = info.pop('_player') + player_path = info.pop('_players') if player_path is None: info['name_team_left'] = 'Team A' info['name_team_right'] = 'Team B' info['name_players_team_left'] = ['player' + str(i) for i in range(1, 7)] info['name_players_team_right'] = ['player' + str(i) for i in range(7, 13)] else: - with open(player_path, 'r') as f: - data = load(f) - """ - JSON format: - { - "right": { - "players": [ - "player7", - "player8", - "player9", - "player10", - "player11", - "player12" - ], - "team": "Team B" - }, - "left": { - "players": [ - "player1", - "player2", - "player3", - "player4", - "player5", - "player6", - ], - "team": "Team A" - } - } - """ + try: + with open(player_path, 'r') as f: + data = json.load(f) + except json.decoder.JSONDecodeError: + print(self.msg.get('json')) + exit(0) info['name_team_left'] = data['left']['team'] info['name_team_right'] = data['right']['team'] info['name_players_team_left'] = data['left']['players'] @@ -140,6 +154,15 @@ def info(self): if not (info['game_type'] == 0 or info['game_type'] == 1): raise ValueError('Invalid game type!') + + try: + print(info['game_version']) + info['game_version'] = int(info['game_version']) + except ValueError: + log('Invalid OWL stage number!') + + if info['game_type'] == 0 and info['game_version'] not in [0, 1, 2, 3, 4]: + raise ValueError('Invalid OWL stage number!') return info def run(self): @@ -150,8 +173,7 @@ def run(self): self.game_instance.analyze(info['start_time'], info['end_time'], is_test=False) pool.PROCESS_POOL.close() pool.PROCESS_POOL.join() - self.game_instance.output_to_json() - self.game_instance.output_to_excel() + self.game_instance.output() log('ok') program = Program() From 075ae495f4562e6578a1879a23d134c1be6047f9 Mon Sep 17 00:00:00 2001 From: Yiqing Zhu Date: Wed, 29 Aug 2018 15:51:21 +0200 Subject: [PATCH 31/57] translate help info --- ora/command_line.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ora/command_line.py b/ora/command_line.py index 99235fb..5a3f6c8 100644 --- a/ora/command_line.py +++ b/ora/command_line.py @@ -58,7 +58,7 @@ def _msg(): """ result['need_help'] = """ Please input with proper amount of arguments. - 如需帮助请输入 main_cli.py help + If you need any help, please type: main_cli.py help """ result['lack'] = "optional lack of token '='" result['json'] = """ From a00705eeb8d8ac2d50f276ee8dbae5570de4565c Mon Sep 17 00:00:00 2001 From: Yiqing Zhu Date: Fri, 7 Sep 2018 16:30:26 +0200 Subject: [PATCH 32/57] modify data structure --- ora/stats/single_match_stats.py | 891 ++++++++++++++++++++++---------- 1 file changed, 621 insertions(+), 270 deletions(-) diff --git a/ora/stats/single_match_stats.py b/ora/stats/single_match_stats.py index 78f67c5..7a99472 100644 --- a/ora/stats/single_match_stats.py +++ b/ora/stats/single_match_stats.py @@ -8,11 +8,119 @@ sys.path.append('../utils') from utils import stats +def time_to_frame(time): + pass + + +class PlayerStats: + + def __init__(self, index): + self.index = index + self.num_charas_used = 0 + self.elims = 0 + self.deaths = 0 + self.resurrects = 0 + self.resurrected = 0 + self.ult_charge = 0 + self.avg_elims_during_tf = 0 + self.avg_deaths_during_tf = 0 + self.avg_elim_ind_during_tf = 0 + self.avg_death_ind_during_tf = 0 + self.elims_per_10min = 0 + self.deaths_per_10min = 0 + self.dps_elims = 0 + self.elimed_by_dps = 0 + self.tank_elims = 0 + self.elimed_by_tank = 0 + self.healer_elims = 0 + self.elimed_by_healer = 0 + self.first_elims = 0 + self.first_elimed = 0 + self.critical_elims = 0 + self.ratio_critical_elim = 0 + self.immediate_elimed = 0 + self.ult_elim = 0 + + return + +class BasicStats: + + def __init__(self): + self.first_elims = [0, 0] # [team1, team2] + self.normal_elims = [0, 0] + self.immediate_elims = [0, 0] + self.ability_elims = [0, 0] + self.ult_elims = [0, 0] + + self.first_elim_tf_win_ratio = [0, 0] + self.player_with_most_first_elims = [0, 0] + + self.total_ults_used = 0 + self.total_ults_used_per_tf = 0 + self.global_avg_elims_per_ult = 0 + self.avg_elims_per_ult = [0, 0] + + self.player_with_most_elims = [0, 0, 0, 0] # [player_ind_of_team1, #_of_elims_of_team1, player_ind_of_team2, #_of_elims_of_team2] + self.chara_with_most_elims = [0, 0, 0, 0] # [chara_ind_of_team1, #_of_elims_of_team1, chara_ind_of_team2, #_of_elims_of_team2] + + self.player_with_most_deaths = [0, 0, 0, 0] + self.chara_with_most_deaths = [0, 0, 0, 0] + + self.player_with_least_deaths = [0, 0, 0, 0] + self.chara_with_least_deaths = [0, 0, 0, 0] + + return + +class SingleTeamFightStats: + + def __init__(self, start_time=0, end_time=0): + self.start_time = start_time + self.end_time = end_time + self.turning_point = 0 + self.ults_used_per_team = [0, 0] + self.ults_used_total = 0 + self.elims_list = [] + return + +class TeamfightStats: + + def __init__(self): + self.data = [] + return + + def _new_teamfight(self): + self.data.append(SingleTeamFightStats()) + return + + +class FrameStats: + def __init__(self, frame, last_frame_data=None): + if last_frame_data: + self = copy.deepcopy(last_frame_data) + self.last_frame_data = last_frame_data + return + + self.last_frame_data = None + self.players = [] + for i in range(12): + self.players.append(PlayerStats(i)) + + self.basics = BasicStats() + self.time = 0 + self.tf_index = 0 # index of current teamfight + + + def _update_player(self, player): + pass + + class SingleMatchStats: """Class of a SingleMatchStats object. + Retrieves and stores all stats listed in competitive_stats_rating_list.xlsx. + Attributes: data_metainfo: Raw data in metainfo.json in dict format data_frames: Raw data in frames.json in dict format @@ -27,176 +135,296 @@ class SingleMatchStats: def __init__(self, zip_path): """Parse JSON zip pack and return corresponding dicts + Author: Appcell + Args: zip_path: path of the .zip file needs to be analyzed + Returns: None """ archive = zipfile.ZipFile(zip_path, 'r') - self.data_metainfo = json.loads(archive.read('metainfo.json')) - self.data_frames = json.loads(archive.read('frames.json')) - self.data_sheet1 = json.loads(archive.read('data_sheet1.json')) - self.data_sheet2 = json.loads(archive.read('data_sheet2.json')) - self.data_sheet3 = json.loads(archive.read('data_sheet3.json')) - self.elims = self.get_eliminations() - self.resurrects = self.get_resurrects() - self.suicides = self.get_suicides() - self.demechs = self.get_demechs() - self.teamfight_separations = self.get_teamfight_separations() - self.teamfight = self.get_all_teamfight() - self.player_arr = self.get_init_player_basic_data() - - def _get_actions(self, action,start_time=0, end_time=0,data=0): - """通过action字段获取相应事件段里面的action列表 - Author: - ForYou - Args: - action:事件类型 - start_time: start of the time range given in seconds - end_time: end of the time range given in seconds - Returns: - 对应action的事件list - """ - if data == 0: - res =[] - if end_time == 0 and start_time == 0: - for event in self.data_sheet1: - if event['action'] == action: - time_arr = event['time'].split(':') - curr_time = stats.hms_to_seconds(time_arr[0], - time_arr[1], time_arr[2]) - event['time'] = curr_time - res.append(event) - else: - for event in self.data_sheet1: - time_arr = event['time'].split(':') - curr_time = stats.hms_to_seconds(time_arr[0], - time_arr[1], time_arr[2]) - if curr_time >= start_time and curr_time >= end_time \ - and self.event['action'] == action: - event['time'] = curr_time - res.append(event) - return res + self._data_metainfo = json.loads(archive.read('metainfo.json')) + self._data_frames = json.loads(archive.read('frames.json')) + self._data_sheet1 = json.loads(archive.read('data_sheet1.json')) + self._data_sheet2 = json.loads(archive.read('data_sheet2.json')) + self._data_sheet3 = json.loads(archive.read('data_sheet3.json')) + self._elims = self.get_eliminations() + self._resurrects = self.get_resurrects() + self._suicides = self.get_suicides() + self._demechs = self.get_demechs() + self._teamfight_separations = self.get_teamfight_separations() + self._teamfight = self.get_all_teamfight() + + + self.players_arr = self.get_init_player_basic_data() + + def add_new_frame(self): + + # All data contained in one flame includes: + # Players (12 in total), CURRENT teamfight data, CURRENT global data + player = { + "index": 0, + 'num_charas_used': 0, + + "elims": 0, + "deaths": 0, + "resurrects": 0, + "resurrected": 0, + "ult_charge": 0, + + "avg_elims_during_tf": 0, + "avg_deaths_during_tf": 0, + + "avg_elim_ind_during_tf": 0, + "avg_death_ind_during_tf": 0, + + "elims_per_10min": 0, + "deaths_per_10min": 0, + + "dps_elims": 0, + "elimed_by_dps": 0, + + "tank_elims": 0, + "elimed_by_tank": 0, + + "healer_elims": 0, + "elimed_by_healer": 0, + + "first_elims": 0, + "first_elimed": 0, + "critical_elims": 0, + "ratio_critical_elim": 0, - def get_eliminations(self, start_time=0, end_time=0): + "immediate_elimed": 0, + "ult_elims": 0 + } + + basics = { + "first_elims": [0, 0], + "normal_elims": [0, 0], + "immediate_elims": [0, 0], + "ability_elims": [0, 0], + "ult_elims": [0, 0], + + "first_elim_tf_win_ratio": [0, 0], + "player_with_most_first_elims": [0, 0], + + "total_ults_used": 0, + "total_ults_used_per_tf": 0, + "global_avg_elims_per_ult": 0, + "avg_elims_per_ult": [0, 0], + + "player_with_most_elims": [0, 0, 0, 0], + "chara_with_most_elims": [0, 0, 0, 0], + + "player_with_most_deaths": [0, 0, 0, 0], + "chara_with_most_deaths": [0, 0, 0, 0], + + "player_with_least_deaths": [0, 0, 0, 0], + "chara_with_least_deaths": [0, 0, 0, 0] + } + + + + teamfight_data = { + "start_time": 0, + "end_time": 0, + "turning_point": 0, + + "ults_used_per_team": [0, 0], + "ults_used_total": 0, + "elims_list": [ + [{ + "subject_player": "PlayerA", + "subject_chara": "Tracer", + "subject_index": 1, + "global_elim_ind": 0, + "team_elim_ind": 0, + "time": 21.5 + }, + { + "object_player": "PlayerB", + "object_chara": "Tracer", + "object_index": 7, + "global_elimed_ind": 0, + "team_elimed_ind": 0, + "time": 21 + }, + { + "object_player": "PlayerC", + "object_chara": "Zenyatta", + "object_index": 9, + "global_elimed_ind": 1, + "team_elimed_ind": 1, + "time": 22 + } + ], + [{ + "subject_player": "PlayerD", + "subject_chara": "Roadhog", + "subject_index": 8, + "global_elim_ind": 2, + "team_elim_ind": 1, + "time": 28 + }, + { + "object_player": "PlayerE", + "object_chara": "Mccree", + "object_index": 2, + "global_elimed_ind": 2, + "team_elimed_ind": 1, + "time": 28 + }], + + ], + } + + + def get_eliminations(self, start_frame=0, end_frame=0): """Get all eliminatins in a given time range. - If start_time == 0 and end_time == 0, return full elim list. + + If start_frame == 0 and end_frame == 0, return full elim list. + Author: Appcell + Args: - start_time: start of the time range given in seconds - end_time: end of the time range given in seconds + start_frame: start of the time range given in seconds + end_frame: end of the time range given in seconds + Returns: A list of all eliminatins in a given time range. """ - return self._get_actions('Eliminate',start_time,end_time) + return self._get_actions('Eliminate',start_frame,end_frame) - def get_eliminations_incremented(self, data, start_time, end_time): + def get_eliminations_incremented(self, data, start_frame, end_frame): """Append eliminations in given time range onto existed array Author: Appcell + Args: data: list of given elimination data - start_time: start of the time range given in seconds - end_time: end of the time range given in seconds + start_frame: start of the time range given in seconds + end_frame: end of the time range given in seconds + Returns: A list of all eliminatins in a given time range appended to original list. """ - return self._get_actions('Eliminate',start_time,end_time,data) + return self._get_actions('Eliminate',start_frame,end_frame,data) - def get_resurrects(self, start_time=0, end_time=0): + def get_resurrects(self, start_frame=0, end_frame=0): """Get all resurrects in a given time range. - If start_time == 0 and end_time == 0, return full resurrect list. + + If start_frame == 0 and end_frame == 0, return full resurrect list. + Author: ForYou + Args: - start_time: start of the time range given in seconds - end_time: end of the time range given in seconds + start_frame: start of the time range given in seconds + end_frame: end of the time range given in seconds + Returns: A list of all resurrects in a given time range. """ - return self._get_actions('Resurrect',start_time,end_time) + return self._get_actions('Resurrect',start_frame,end_frame) - def get_resurrects_incremented(self, data, start_time, end_time): + def get_resurrects_incremented(self, data, start_frame, end_frame): """Append resurrects in given time range onto existed array Author: ForYou + Args: data: list of given resurrects data - start_time: start of the time range given in seconds - end_time: end of the time range given in seconds + start_frame: start of the time range given in seconds + end_frame: end of the time range given in seconds + Returns: - A list of all resurrects in a given time range appended to original list. + A list of all resurrects in a given time range appended to + original list. """ - return self._get_actions('Resurrect',start_time,end_time,data) + return self._get_actions('Resurrect',start_frame,end_frame,data) - def get_suicides(self, start_time=0, end_time=0): + def get_suicides(self, start_frame=0, end_frame=0): """Get all suicides in a given time range. - If start_time == 0 and end_time == 0, return full suicide list. + + If start_frame == 0 and end_frame == 0, return full suicide list. + Author: ForYou + Args: - start_time: start of the time range given in seconds - end_time: end of the time range given in seconds + start_frame: start of the time range given in seconds + end_frame: end of the time range given in seconds + Returns: A list of all suicides in a given time range. """ - return self._get_actions('Suicide',start_time,end_time) + return self._get_actions('Suicide',start_frame,end_frame) - def get_suicides_incremented(self, data, start_time, end_time): + def get_suicides_incremented(self, data, start_frame, end_frame): """Append suicides in given time range onto existed array Author: ForYou + Args: data: list of given suicides data - start_time: start of the time range given in seconds - end_time: end of the time range given in seconds + start_frame: start of the time range given in seconds + end_frame: end of the time range given in seconds + Returns: A list of all suicides in a given time range appended to original list. """ - return self._get_actions('Suicide',start_time,end_time,data) + return self._get_actions('Suicide',start_frame,end_frame,data) - def get_demechs(self, start_time=0, end_time=0): + def get_demechs(self, start_frame=0, end_frame=0): """Get all demechs in a given time range. - If start_time == 0 and end_time == 0, return full demech list. + If start_frame == 0 and end_frame == 0, return full demech list. + Author: ForYou + Args: - start_time: start of the time range given in seconds - end_time: end of the time range given in seconds + start_frame: start of the time range given in seconds + end_frame: end of the time range given in seconds + Returns: A list of all demechs in a given time range. """ - return self._get_actions('Demech',start_time,end_time) + return self._get_actions('Demech',start_frame,end_frame) - def get_demechs_incremented(self, data, start_time, end_time): + def get_demechs_incremented(self, data, start_frame, end_frame): """Append demechs in given time range onto existed array Author: ForYou + Args: data: list of given demechs data - start_time: start of the time range given in seconds - end_time: end of the time range given in seconds + start_frame: start of the time range given in seconds + end_frame: end of the time range given in seconds + Returns: A list of all demechs in a given time range appended to original list. """ - return self._get_actions('Demech',start_time,end_time,data) + return self._get_actions('Demech',start_frame,end_frame,data) def get_teamfight_index(self, time): """Get index of team-fight happening at given timestamp. - - A temporary standard for separating team-fights: + Author: ForYou + Args: time: current time in seconds + Returns: Index of team-fight happening at 'time'. """ @@ -216,10 +444,13 @@ def get_teamfight_separations(self): Author: Appcell + Args: None + Returns: - A list of all timestamps marking separations between each teamfight. + A list of all timestamps marking separations between each + teamfight. """ res = [0] if len(self.elims) > 1: @@ -231,15 +462,18 @@ def get_teamfight_separations(self): return res - def get_ults(self,start_time, end_time): - """输出时间段内的data_sheet3 + def get_ults(self,start_frame, end_frame): + """Output all data in sheet3 in a given timerange. + Author: maocili + Args: - start_time : 开始时间 - end_time : 结束时间 + start_frame: start time + end_frame: end time + Returns: - res : 包含data_sheet3的list + All data in sheet3 from start_frame to end_frame """ res=[] @@ -250,55 +484,56 @@ def get_ults(self,start_time, end_time): curr_time = stats.hms_to_seconds(time_arr[0], time_arr[1], time_arr[2]) data['time'] = curr_time - if start_time <= data['time'] and end_time >= data['time']: + if start_frame <= data['time'] and end_frame >= data['time']: res.append(data) - elif end_time <= data['time']: + elif end_frame <= data['time']: break return res - def get_arr_varitation(self, start_time, end_time): + def get_arr_varitation(self, start_frame, end_frame): """根据self.data_sheet3 输出时间段中的大招能量变化 + Author: maocili Args: - start_time : 开始时间 - end_time : 结束时间 + start_frame : 开始时间 + end_frame : 结束时间 Returns: res : 包含大招能量变化的dict """ res = { - 'start_time': start_time, - 'end_time': end_time, + 'start_frame': start_frame, + 'end_frame': end_frame, 'ult_charge': [] } - start = self.get_ults(start_time,start_time) - end = self.get_ults(end_time,end_time) + start = self.get_ults(start_frame,start_frame) + end = self.get_ults(end_frame,end_frame) for i in end: for index,player in enumerate(i['players']): end[0]['players'][index]['ults'] = end[0]['players'][index]['ults'] - start[0]['players'][index]['ults'] - end[0]['time'] = [start_time,end_time] + end[0]['time'] = [start_frame,end_frame] return end - def get_ult_vary(self, data, start_time, end_time): + def get_ult_vary(self, data, start_frame, end_frame): """在data的基础上加上新时间段的变化 Author: maocili Args: data : 时间段的大招能量变化 - start_time : 开始时间 - end_time : 结束时间 + start_frame : 开始时间 + end_frame : 结束时间 Returns: res : 两个时间段的大招能量变化 """ - new_data= self.get_arr_varitation(start_time,end_time)[0] + new_data= self.get_arr_varitation(start_frame,end_frame)[0] for index,player in enumerate(new_data['players']): new_data['players'][index]['ults'] = new_data['players'][index]['ults'] + data[0]['players'][index]['ults'] @@ -307,10 +542,13 @@ def get_ult_vary(self, data, start_time, end_time): def get_total_time(self): """get the time of the game + Author: ngc7293 + Args: None + Returns: float : the timestamps of the game """ @@ -318,8 +556,10 @@ def get_total_time(self): def get_all_eliminations(self): """get the total eliminations + Author: ngc7293 + Args: None @@ -330,11 +570,14 @@ def get_all_eliminations(self): return len(self.elims) def get_all_deaths(self): - """get the total deaths + """Get # of total deaths + Author: ngc7293 + Args: None + Returns: int: number of total deaths """ @@ -349,11 +592,14 @@ def get_all_deaths(self): return death_num def get_most_elim_player(self): - """get the most eliminations players + """Get the most eliminations players + Author: ngc7293 + Args: None + Returns: dict: the player with most elims(number,name,the number of eliminations) """ @@ -377,14 +623,17 @@ def get_most_elim_player(self): return res - def get_most_kda_player(self): - """get the most kd-rate players + def get_highest_kd_player(self): + """Get the player with highest kd ratio + Author: ngc7293 + Args: None + Returns: - str: the player have most kd-rate + str: name of the player with highest kd ratio """ player_dict = {} for events in self.data_sheet1: @@ -409,68 +658,115 @@ def get_most_kda_player(self): player_dict[player]['dead'] = 1 mkp_dict[player] = player_dict[player]['elim']/player_dict[player]['dead'] - return max(mkp_dict,key=mkp_dict.get) + return max(mkp_dict, key=mkp_dict.get) def get_all_teamfight(self): - """get the teamfight in whole game + """Get a list of all teamfights in full match + Author: ngc7293 + Args: None + Returns: - list: the list of all teamfights + list: a list of all teamfights """ if self.teamfight_separations == [0]: sep = [0,self.get_total_time()] res = [] - start_time_target = 0 - end_time_target = 1 + start_frame_target = 0 + end_frame_target = 1 one_fight = [] for event in self.elims: if event['action'] == 'Eliminate' and \ - event['time'] >= sep[start_time_target] and \ - event['time'] <= sep[end_time_target]: + event['time'] >= sep[start_frame_target] and \ + event['time'] <= sep[end_frame_target]: one_fight.append(event) - elif event['time'] >= sep[end_time_target]: - start_time_target += 1 - end_time_target += 1 + elif event['time'] >= sep[end_frame_target]: + start_frame_target += 1 + end_frame_target += 1 res.append(one_fight) one_fight = [] res.append(one_fight) return res - def get_avgtime_teamfight(self): - """get the avg teamfight time in whole game + def get_average_teamfight_time(self): + """Get the avg teamfight time computed across the whole game + Author: ngc7293 + Args: None + Returns: - float: the avgtime of all teamfight + float: avg teamfight time """ fight_time = [fight[-1]['time']-fight[0]['time']+7 for fight in self.teamfight] return sum(fight_time)/len(fight_time) - def get_count_teamfight(self): - """get the teamfights' count + def get_totalnum_teamfight(self): + """Get the teamfights' count + Author: ngc7293 + Args: None + Returns: - int: the count of teamfight + int: the # of teamfight """ return len(self.teamfight) + def _get_actions(self, action, start_frame = 0, end_frame = 0, data = None): + """Get action list via "action" key-value pairs in events list. + + Author: + ForYou + + Args: + action: action type + start_frame: start of the time range given in seconds + end_frame: end of the time range given in seconds + + Returns: + List of all actions + """ + res = data if data else [] + if end_frame == 0 and start_frame == 0: + for event in self.data_sheet1: + if event['action'] == action: + time_arr = event['time'].split(':') + curr_time = stats.hms_to_seconds( + time_arr[0], time_arr[1], time_arr[2]) + event['frame_ind'] = curr_time + res.append(event) + else: + for event in self.data_sheet1: + time_arr = event['time'].split(':') + curr_time = stats.hms_to_seconds(time_arr[0], + time_arr[1], time_arr[2]) + if curr_time >= start_frame and curr_time >= end_frame \ + and self.event['action'] == action: + event['time'] = curr_time + res.append(event) + return res + + + def get_init_player_basic_data(self): - ''' - 根据data_sheet2初始化各个选手基本数据 + """ Initialize data according to data_sheet2 + Author: ForYou + Args: - None + None + Returns: - player_arr:以选手player为单位的数组,共12个,每个player中包括以下内容: + players_arr:以选手player为单位的数组,共12个,每个player中包括以下内容: team:队伍名称 team_status:队伍进攻或防守 index:编号从左往右 @@ -531,11 +827,45 @@ def get_init_player_basic_data(self): Demechcritical die:机甲被爆头击杀总数 Demechcritical kill:爆头击杀机甲总数 Demechassist die:机甲被助攻总数(集火目标) + """ + heros = { + 'chara':'', + 'Eliminate':0, + 'assist':0, + 'Resurrect':0, + 'die':0, + 'Suicide':0, + 'Resurrected':0, + 'critical die':0, + 'critical kill':0, + 'assist die':0, + 'EliminateDetail':[], + 'assistDetail':[], + 'dieDetail':[]} + + total = { + 'totalhero':1, + 'totalEliminate':0, + 'totalassist':0, + 'totalResurrect':0, + 'totaldie':0, + 'totalSuicide':0, + 'totalResurrected':0, + 'totalcritical die':0, + 'totalcritical kill':0, + 'totalassist die':0, + 'totalDemech':0, + 'totalDemechassist':0, + 'totalDemechdie':0, + 'totalDemechcritical die':0, + 'totalDemechcritical kill':0, + 'totalDemechassist die':0, + 'totalEliminateDetail':[], + 'totalassistDetail':[], + 'totaldieDetail':[]} + + players_arr = [] - ''' - heros = {'chara':'','Eliminate':0,'assist':0,'Resurrect':0,'die':0,'Suicide':0,'Resurrected':0,'critical die':0,'critical kill':0,'assist die':0,'EliminateDetail':[],'assistDetail':[],'dieDetail':[]} - total = {'totalhero':1,'totalEliminate':0,'totalassist':0,'totalResurrect':0,'totaldie':0,'totalSuicide':0,'totalResurrected':0,'totalcritical die':0,'totalcritical kill':0,'totalassist die':0,'totalDemech':0,'totalDemechassist':0,'totalDemechdie':0,'totalDemechcritical die':0,'totalDemechcritical kill':0,'totalDemechassist die':0,'totalEliminateDetail':[],'totalassistDetail':[],'totaldieDetail':[]} - player_arr = [] for teamindex, teamvalue in enumerate(self.data_sheet2): for player in teamvalue['players']: hero = player['starting lineup'] @@ -546,361 +876,382 @@ def get_init_player_basic_data(self): player['team_status'] = teamvalue['team_status'] for key in total: player[key] = total[key] - player_arr.append(player) - return player_arr + players_arr.append(player) + + return players_arr + + + def get_player_basic_eliminates(self, start_frame=0, end_frame=0, data=None): + """获取在原数据基础上返回固定时间段内击杀相关数据粗加工 - def get_player_basic_eliminates(self,start_time=0,end_time=0,data=0): - ''' - 获取在原数据基础上返回固定时间段内击杀相关数据粗加工 Author: ForYou + Args: - start_time开始时间end_time结束时间data原数据 + start_frame开始时间end_frame结束时间data原数据 + Returns: - 同get_init_player_basic_data()返回值 - ''' - #提供了data原有数据就在原有数据累加,没有提供则在初始化的选手信息self.player_arr上添加 + 同get_init_player_basic_data()返回值 + """ + + #提供了data原有数据就在原有数据累加,没有提供则在初始化的选手信息self.players_arr上添加 if data == 0: - player_arr = self.player_arr + players_arr = self.players_arr else: - player_arr = data + players_arr = data + #提供了开始和结束时间则取时间内的击杀事件加工,没有提供则默认全部击杀事件 - if end_time == 0 and start_time == 0: + if end_frame == 0 and start_frame == 0: eliminations = self.elims else: - eliminations = self.get_eliminations(start_time,end_time) - heros = {'chara':'','Eliminate':0,'assist':0,'Resurrect':0,'die':0,'Suicide':0,'Resurrected':0,'critical die':0,'critical kill':0,'assist die':0,'EliminateDetail':[],'assistDetail':[],'dieDetail':[]} + eliminations = self.get_eliminations(start_frame, end_frame) + + heros = { + 'chara':'', + 'Eliminate':0, + 'assist':0, + 'Resurrect':0, + 'die':0, + 'Suicide':0, + 'Resurrected':0, + 'critical die':0, + 'critical kill':0, + 'assist die':0, + 'EliminateDetail':[], + 'assistDetail':[], + 'dieDetail':[]} + #遍历提供的击杀事件,从其中提取信息 - for index, value in enumerate(eliminations): + for elim_ind, elim in enumerate(eliminations): #遍历选手列表,找到信息对应的选手,循环中主要处理三类信息 1:击杀者 2:助攻 3:被击杀者 - for playerindex, playervalue in enumerate(player_arr): + for player_ind, player in enumerate(players_arr): # 1:击杀者相关信息(1a 总击杀 1b爆头总击杀 1c 总击杀明细 1d 使用英雄击杀相关) - if playervalue['name'] == value['subject']['player']: + if player['name'] == elim['subject']['player']: # 1a 总击杀 - player_arr[playerindex]['totalEliminate'] +=1 + players_arr[player_ind]['totalEliminate'] += 1 # 1b 爆头总击杀 - if value['critical kill'] =='Y': - player_arr[playerindex]['totalcritical kill'] += 1 + if elim['critical kill'] == 'Y': + players_arr[player_ind]['totalcritical kill'] += 1 # 1c 总击杀明细 (敌方哪个英雄 几次) hero_eliminate = 0 - for obj_hero_index , obj_hero_value in enumerate(playervalue['totalEliminateDetail']): - if obj_hero_value['chara'] == value['object']['chara']: + for obj_hero_index , obj_hero_value in enumerate(player['totalEliminateDetail']): + if obj_hero_value['chara'] == elim['object']['chara']: hero_eliminate = 1 - player_arr[playerindex]['totalEliminateDetail'][obj_hero_index]['num'] += 1 + players_arr[player_ind]['totalEliminateDetail'][obj_hero_index]['num'] += 1 break # 击杀明细列表中 无此英雄则新增 if hero_eliminate == 0: - newhero_eliminate = {'chara':value['object']['chara'],'num':1} - player_arr[playerindex]['totalEliminateDetail'].append(newhero_eliminate) + newhero_eliminate = {'chara':elim['object']['chara'],'num':1} + players_arr[player_ind]['totalEliminateDetail'].append(newhero_eliminate) # 1d 使用英雄击杀相关 heroisexsit = 0 #遍历已使用英雄 - for used_hero_index, used_hero_value in enumerate(playervalue['heros']): + for used_hero_index, used_hero_value in enumerate(player['heros']): #和选手总击杀类似,这里处理选手不同英雄的击杀数据 - if used_hero_value['chara'] == value['subject']['chara']: + if used_hero_value['chara'] == elim['subject']['chara']: heroisexsit = 1 - player_arr[playerindex]['heros'][used_hero_index]['Eliminate'] += 1 - if value['critical kill'] == 'Y': - player_arr[playerindex]['heros'][used_hero_index]['critical kill'] += 1 + players_arr[player_ind]['heros'][used_hero_index]['Eliminate'] += 1 + if elim['critical kill'] == 'Y': + players_arr[player_ind]['heros'][used_hero_index]['critical kill'] += 1 hero_eliminate = 0 #击杀敌方英雄详情 - for hero_action_detail_index , hero_action_detail_value in enumerate(playervalue['heros']['EliminateDetail']): - if hero_action_detail_value['chara'] == value['object']['chara']: + for hero_action_detail_index , hero_action_detail_value in enumerate(player['heros']['EliminateDetail']): + if hero_action_detail_value['chara'] == elim['object']['chara']: hero_eliminate = 1 - player_arr[playerindex]['heros'][used_hero_index]['EliminateDetail'][hero_action_detail_index]['num'] += 1 + players_arr[player_ind]['heros'][used_hero_index]['EliminateDetail'][hero_action_detail_index]['num'] += 1 break if hero_eliminate == 0: - newhero_eliminate = {'chara':value['object']['chara'],'num':1} - player_arr[playerindex]['heros'][used_hero_index]['EliminateDetail'].append(newhero_eliminate) + newhero_eliminate = {'chara':elim['object']['chara'],'num':1} + players_arr[player_ind]['heros'][used_hero_index]['EliminateDetail'].append(newhero_eliminate) break #未使用过此英雄则新增 if heroisexsit == 0: newhero = deepcopy(heros) - newhero['chara'] = value['subject']['chara'] + newhero['chara'] = elim['subject']['chara'] newhero['Eliminate'] = 1 - newhero_eliminate = {'chara':value['object']['chara'],'num':1} + newhero_eliminate = {'chara':elim['object']['chara'],'num':1} newhero['EliminateDetail'].append(newhero_eliminate) - player_arr[playerindex]['totalhero'] += 1 - if value['critical kill'] == 'Y': + players_arr[player_ind]['totalhero'] += 1 + if elim['critical kill'] == 'Y': newhero['critical kill'] = 1 - player_arr[playerindex]['heros'].append(newhero) + players_arr[player_ind]['heros'].append(newhero) # 2:助攻相关信息 total_assist_die字段记录这次击杀事件造成几个助攻,累加在选手的assist die和totalassist die上,assist die/die 可以看出敌方队伍集火目标 total_assist_die = 0 - for assistplayer in value['assist']: + for assistplayer in elim['assist']: #遍历助攻列表 处理选手的 2a总助攻 2b总助攻明细 2c不同英雄助攻信息 - if playervalue['name'] == assist[assistplayer]['player']: + if player['name'] == assist[assistplayer]['player']: total_assist_die += 1 # 2a 总助攻 - player_arr[playerindex]['totalassist'] += 1 + players_arr[player_ind]['totalassist'] += 1 # 2b 总助攻明细 heroassist = 0 - for obj_hero_index , obj_hero_value in enumerate(playervalue['totalassistDetail']): - if obj_hero_value['chara'] == value['object']['chara']: + for obj_hero_index , obj_hero_value in enumerate(player['totalassistDetail']): + if obj_hero_value['chara'] == elim['object']['chara']: heroassist = 1 - player_arr[playerindex]['totalassistDetail'][obj_hero_index]['num'] += 1 + players_arr[player_ind]['totalassistDetail'][obj_hero_index]['num'] += 1 break if heroassist == 0: - newheroassist = {'chara':value['object']['chara'],'num':1} - player_arr[playerindex]['totalassistDetail'].append(newheroassist) + newheroassist = {'chara':elim['object']['chara'],'num':1} + players_arr[player_ind]['totalassistDetail'].append(newheroassist) # 2c 遍历英雄更新助攻信息 heroisexsit = 0 - for used_hero_index, used_hero_value in enumerate(playervalue['heros']): + for used_hero_index, used_hero_value in enumerate(player['heros']): if used_hero_value['chara'] == assist[assistplayer]['hero']: heroisexsit = 1 - player_arr[playerindex]['heros'][used_hero_index]['assist'] += 1 + players_arr[player_ind]['heros'][used_hero_index]['assist'] += 1 #助攻击杀敌方英雄信息 heroassist = 0 - for hero_action_detail_index , hero_action_detail_value in enumerate(playervalue['heros']['assistDetail']): - if hero_action_detail_value['chara'] == value['object']['chara']: + for hero_action_detail_index , hero_action_detail_value in enumerate(player['heros']['assistDetail']): + if hero_action_detail_value['chara'] == elim['object']['chara']: heroassist = 1 - player_arr[playerindex]['heros'][used_hero_index]['assistDetail'][hero_action_detail_index]['num'] += 1 + players_arr[player_ind]['heros'][used_hero_index]['assistDetail'][hero_action_detail_index]['num'] += 1 break if heroassist == 0: - newheroassist = {'chara':value['object']['chara'],'num':1} - player_arr[playerindex]['heros'][used_hero_index]['assistDetail'].append(newheroassist) + newheroassist = {'chara':elim['object']['chara'],'num':1} + players_arr[player_ind]['heros'][used_hero_index]['assistDetail'].append(newheroassist) break #使用英雄不存在则新增 if heroisexsit == 0: newhero = deepcopy(heros) newhero['chara'] = assist[assistplayer]['hero'] newhero['assist'] = 1 - newheroassist = {'chara':value['object']['chara'],'num':1} + newheroassist = {'chara':elim['object']['chara'],'num':1} newhero['assistDetail'].append(newheroassist) - player_arr[playerindex]['totalhero'] += 1 - player_arr[playerindex]['heros'].append(newhero) + players_arr[player_ind]['totalhero'] += 1 + players_arr[player_ind]['heros'].append(newhero) # 3:被击杀者信息(3a 总死亡 3b总被助攻 3c 总被爆头击杀 3d 被击杀明细 3e 被击杀英雄相关) - if playervalue['name'] == value['object']['player']: + if player['name'] == elim['object']['player']: #3a 总死亡 - player_arr[playerindex]['totaldie'] += 1 + players_arr[player_ind]['totaldie'] += 1 #3b 总被助攻数 - player_arr[playerindex]['totalassist die'] += total_assist_die + players_arr[player_ind]['totalassist die'] += total_assist_die #3c 总被爆头击杀数 - if value['critical kill'] == 'Y': - player_arr[playerindex]['totalcritical die'] += 1 + if elim['critical kill'] == 'Y': + players_arr[player_ind]['totalcritical die'] += 1 #3d 被击杀明细 (造成击杀的敌方英雄构成及次数) herodie = 0 - for obj_hero_index , obj_hero_value in enumerate(playervalue['totaldieDetail']): - if obj_hero_value['chara'] == value['subject']['chara']: + for obj_hero_index , obj_hero_value in enumerate(player['totaldieDetail']): + if obj_hero_value['chara'] == elim['subject']['chara']: herodie = 1 - player_arr[playerindex]['totaldieDetail'][obj_hero_index]['num'] += 1 + players_arr[player_ind]['totaldieDetail'][obj_hero_index]['num'] += 1 break if herodie == 0: - newherodie = {'chara':value['subject']['chara'],'num':1} - player_arr[playerindex]['totaldieDetail'].append(newherodie) + newherodie = {'chara':elim['subject']['chara'],'num':1} + players_arr[player_ind]['totaldieDetail'].append(newherodie) #3e 被击杀英雄(死亡构成) 数据结构与总数据类似 heroisexsit = 0 - for used_hero_index, used_hero_value in enumerate(playervalue['heros']): - if used_hero_value['chara'] == value['object']['chara']: + for used_hero_index, used_hero_value in enumerate(player['heros']): + if used_hero_value['chara'] == elim['object']['chara']: heroisexsit = 1 - player_arr[playerindex]['heros'][used_hero_index]['die'] += 1 - player_arr[playerindex]['heros'][used_hero_index]['assist die'] += total_assist_die - if value['critical kill'] == 'Y': - player_arr[playerindex]['heros'][used_hero_index]['critical die'] += 1 + players_arr[player_ind]['heros'][used_hero_index]['die'] += 1 + players_arr[player_ind]['heros'][used_hero_index]['assist die'] += total_assist_die + if elim['critical kill'] == 'Y': + players_arr[player_ind]['heros'][used_hero_index]['critical die'] += 1 herodie = 0 - for hero_action_detail_index , hero_action_detail_value in enumerate(playervalue['heros']['dieDetail']): - if hero_action_detail_value['chara'] == value['subject']['chara']: + for hero_action_detail_index , hero_action_detail_value in enumerate(player['heros']['dieDetail']): + if hero_action_detail_value['chara'] == elim['subject']['chara']: herodie = 1 - player_arr[playerindex]['heros'][used_hero_index]['dieDetail'][hero_action_detail_index]['num'] += 1 + players_arr[player_ind]['heros'][used_hero_index]['dieDetail'][hero_action_detail_index]['num'] += 1 break if herodie == 0: - newherodie = {'chara':value['subject']['chara'],'num':1} - player_arr[playerindex]['heros'][used_hero_index]['dieDetail'].append(newherodie) + newherodie = {'chara':elim['subject']['chara'],'num':1} + players_arr[player_ind]['heros'][used_hero_index]['dieDetail'].append(newherodie) break #被击杀的英雄不存在则新增 if heroisexsit == 0: newhero = deepcopy(heros) - newhero['chara'] = value['object']['chara'] + newhero['chara'] = elim['object']['chara'] newhero['die'] = 1 - newherodie = {'chara':value['subject']['chara'],'num':1} + newherodie = {'chara':elim['subject']['chara'],'num':1} newhero['dieDetail'].append(newherodie) newhero['assist die'] = total_assist_die - player_arr[playerindex]['totalhero'] += 1 - if value['critical kill'] == 'Y': + players_arr[player_ind]['totalhero'] += 1 + if elim['critical kill'] == 'Y': newhero['critical die'] = 1 - player_arr[playerindex]['heros'].append(newhero) + players_arr[player_ind]['heros'].append(newhero) - def get_player_basic_resurrects(self,start_time=0,end_time=0,data=0): + def get_player_basic_resurrects(self, start_frame=0, end_frame=0, data=0): ''' 获取在原数据基础上返回固定时间段内复活相关数据粗加工 Author: ForYou Args: - start_time开始时间end_time结束时间data原数据 + start_frame开始时间end_frame结束时间data原数据 Returns: 同get_init_player_basic_data()返回值 ''' - #提供了data原有数据就在原有数据累加,没有提供则在初始化的选手信息self.player_arr上添加 + #提供了data原有数据就在原有数据累加,没有提供则在初始化的选手信息self.players_arr上添加 if data == 0: - player_arr = self.player_arr + players_arr = self.players_arr else: - player_arr = data + players_arr = data #提供了开始和结束时间则取时间内的复活事件加工,没有提供则默认全部复活事件 - if end_time == 0 and start_time == 0: + if end_frame == 0 and start_frame == 0: resurrects = self.resurrects else: - resurrects = self.get_resurrects(start_time,end_time) + resurrects = self.get_resurrects(start_frame,end_frame) heros = {'chara':'','Eliminate':0,'assist':0,'Resurrect':0,'die':0,'Suicide':0,'Resurrected':0,'critical die':0,'critical kill':0,'assist die':0,'EliminateDetail':[],'assistDetail':[],'dieDetail':[]} #遍历提供的复活事件 for index, value in enumerate(resurrects): #遍历选手列表 更新 1 复活数据 2 被复活数据 - for playerindex, playervalue in enumerate(player_arr): + for player_ind, playervalue in enumerate(players_arr): #复活数据 和击杀数据一样做了英雄分组 1是为了保持数据格式的一致性,2是防止出另外具有复活技能的英雄 if playervalue['name'] == value['subject']['player']: - player_arr[playerindex]['totalResurrect'] += 1 + players_arr[player_ind]['totalResurrect'] += 1 heroisexsit = 0 for used_hero_index, used_hero_value in enumerate(playervalue['heros']): if used_hero_value['chara'] == value['subject']['chara']: heroisexsit = 1 - player_arr[playerindex]['heros'][used_hero_index]['Resurrect'] += 1 + players_arr[player_ind]['heros'][used_hero_index]['Resurrect'] += 1 break if heroisexsit == 0: newhero = deepcopy(heros) newhero['chara'] = value['subject']['chara'] newhero['Resurrect'] = 1 - player_arr[playerindex]['totalhero'] += 1 - player_arr[playerindex]['heros'].append(newhero) + players_arr[player_ind]['totalhero'] += 1 + players_arr[player_ind]['heros'].append(newhero) #被复活数据 if playervalue['name'] == value['object']['player']: - player_arr[playerindex]['totalResurrected'] += 1 + players_arr[player_ind]['totalResurrected'] += 1 heroisexsit = 0 for used_hero_index, used_hero_value in enumerate(playervalue['heros']): if used_hero_value['chara'] == value['object']['chara']: heroisexsit = 1 - player_arr[playerindex]['heros'][used_hero_index]['Resurrected'] += 1 + players_arr[player_ind]['heros'][used_hero_index]['Resurrected'] += 1 break if heroisexsit == 0: newhero = deepcopy(heros) newhero['chara'] = value['object']['chara'] newhero['Resurrected'] = 1 - player_arr[playerindex]['totalhero'] += 1 - player_arr[playerindex]['heros'].append(newhero) + players_arr[player_ind]['totalhero'] += 1 + players_arr[player_ind]['heros'].append(newhero) - def get_player_basic_suicides(self,start_time=0,end_time=0,data=0): + def get_player_basic_suicides(self,start_frame=0,end_frame=0,data=0): ''' 获取在原数据基础上返回固定时间段内自杀相关数据粗加工 Author: ForYou Args: - start_time开始时间end_time结束时间data原数据 + start_frame开始时间end_frame结束时间data原数据 Returns: 同get_init_player_basic_data()返回值 ''' - #提供了data原有数据就在原有数据累加,没有提供则在初始化的选手信息self.player_arr上添加 + #提供了data原有数据就在原有数据累加,没有提供则在初始化的选手信息self.players_arr上添加 if data == 0: - player_arr = self.player_arr + players_arr = self.players_arr else: - player_arr = data + players_arr = data #提供了开始和结束时间则取时间内的自杀事件加工,没有提供则默认全部自杀事件 - if end_time == 0 and start_time == 0: + if end_frame == 0 and start_frame == 0: suicides = self.suicides else: - suicides = self.get_suicides(start_time,end_time) + suicides = self.get_suicides(start_frame,end_frame) heros = {'chara':'','Eliminate':0,'assist':0,'Resurrect':0,'die':0,'Suicide':0,'Resurrected':0,'critical die':0,'critical kill':0,'assist die':0,'EliminateDetail':[],'assistDetail':[],'dieDetail':[]} #遍历提供的自杀事件 for index, value in enumerate(suicides): #遍历选手列表 更新自杀数据 - for playerindex, playervalue in enumerate(player_arr): + for player_ind, playervalue in enumerate(players_arr): if playervalue['name'] == value['object']['player']: - player_arr[playerindex]['totalSuicide'] += 1 + players_arr[player_ind]['totalSuicide'] += 1 heroisexsit = 0 for used_hero_index, used_hero_value in enumerate(playervalue['heros']): if used_hero_value['chara'] == value['object']['chara']: heroisexsit = 1 - player_arr[playerindex]['heros'][used_hero_index]['Suicide'] += 1 + players_arr[player_ind]['heros'][used_hero_index]['Suicide'] += 1 break if heroisexsit == 0: newhero = deepcopy(heros) newhero['chara'] = value['object']['chara'] newhero['Suicide'] = 1 - player_arr[playerindex]['totalhero'] += 1 - player_arr[playerindex]['heros'].append(newhero) + players_arr[player_ind]['totalhero'] += 1 + players_arr[player_ind]['heros'].append(newhero) - def get_player_basic_demechs(self,start_time=0,end_time=0,data=0): + def get_player_basic_demechs(self,start_frame=0,end_frame=0,data=0): ''' 获取在原数据基础上返回固定时间段内机甲相关数据粗加工 Author: ForYou Args: - start_time开始时间end_time结束时间data原数据 + start_frame开始时间end_frame结束时间data原数据 Returns: 同get_init_player_basic_data()返回值 ''' - #提供了data原有数据就在原有数据累加,没有提供则在初始化的选手信息self.player_arr上添加 + #提供了data原有数据就在原有数据累加,没有提供则在初始化的选手信息self.players_arr上添加 if data == 0: - player_arr = self.player_arr + players_arr = self.players_arr else: - player_arr = data + players_arr = data #提供了开始和结束时间则取时间内的击杀机甲事件加工,没有提供则默认全部击杀机甲事件 - if end_time == 0 and start_time == 0: + if end_frame == 0 and start_frame == 0: demechs = self.demechs else: - demechs = self.get_suicides(start_time,end_time) + demechs = self.get_suicides(start_frame,end_frame) heros = {'chara':'','Eliminate':0,'assist':0,'Resurrect':0,'die':0,'Suicide':0,'Resurrected':0,'critical die':0,'critical kill':0,'assist die':0,'EliminateDetail':[],'assistDetail':[],'dieDetail':[]} #遍历提供的击杀机甲事件 此函数与击杀事件get_player_basic_eliminates类似,注释会从简 for index, value in enumerate(demechs): #遍历选手列表 处理选手的 1 拆机甲 2 助攻拆机甲 3 被拆机甲 - for playerindex, playervalue in enumerate(player_arr): + for player_ind, playervalue in enumerate(players_arr): # 1:拆机甲相关数据 拆机甲总数 爆头拆机甲总数 不同英雄拆机甲数据 if playervalue['name'] == value['subject']['player']: - player_arr[playerindex]['totalDemech'] += 1 + players_arr[player_ind]['totalDemech'] += 1 if value['critical kill'] == 'Y': - player_arr[playerindex]['totalDemechcritical kill'] += 1 + players_arr[player_ind]['totalDemechcritical kill'] += 1 heroisexsit = 0 for used_hero_index, used_hero_value in enumerate(playervalue['heros']): if used_hero_value['chara'] == value['subject']['chara']: heroisexsit = 1 - player_arr[playerindex]['heros'][used_hero_index]['Demech'] += 1 + players_arr[player_ind]['heros'][used_hero_index]['Demech'] += 1 if value['critical kill'] == 'Y': - player_arr[playerindex]['heros'][used_hero_index]['Demechcritical kill'] += 1 + players_arr[player_ind]['heros'][used_hero_index]['Demechcritical kill'] += 1 break if heroisexsit == 0: newhero = deepcopy(heros) newhero['chara'] = value['subject']['chara'] newhero['Demech'] = 1 - player_arr[playerindex]['totalhero'] += 1 + players_arr[player_ind]['totalhero'] += 1 if value['critical kill'] == 'Y': newhero['Demechcritical kill'] = 1 - player_arr[playerindex]['heros'].append(newhero) + players_arr[player_ind]['heros'].append(newhero) #2:助攻拆机甲数据 遍历助攻列表 处理选手的 总助攻 不同英雄助攻信息 total_demech_assistdie = 0 for assistplayer in value['assist']: if playervalue['name'] == assist[assistplayer]['player']: total_demech_assistdie += 1 - player_arr[playerindex]['totalDemechassist'] += 1 + players_arr[player_ind]['totalDemechassist'] += 1 heroisexsit = 0 for used_hero_index, used_hero_value in enumerate(playervalue['heros']): if used_hero_value['chara'] == assist[assistplayer]['hero']: heroisexsit = 1 - player_arr[playerindex]['heros'][used_hero_index]['Demechassist'] += 1 + players_arr[player_ind]['heros'][used_hero_index]['Demechassist'] += 1 break if heroisexsit == 0: newhero = deepcopy(heros) newhero['chara'] = assist[assistplayer]['hero'] newhero['Demechassist'] = 1 - player_arr[playerindex]['totalhero'] += 1 - player_arr[playerindex]['heros'].append(newhero) + players_arr[player_ind]['totalhero'] += 1 + players_arr[player_ind]['heros'].append(newhero) #3:被拆机甲信息(总死亡 总被助攻 总被爆头击杀 被击杀英雄此处专指dva) if playervalue['name'] == value['object']['player']: - player_arr[playerindex]['totalDemechdie'] += 1 - player_arr[playerindex]['totalDemechassist die'] += total_demech_assistdie + players_arr[player_ind]['totalDemechdie'] += 1 + players_arr[player_ind]['totalDemechassist die'] += total_demech_assistdie if value['critical kill'] == 'Y': - player_arr[playerindex]['totalDemechcritical die'] += 1 + players_arr[player_ind]['totalDemechcritical die'] += 1 heroisexsit = 0 for used_hero_index, used_hero_value in enumerate(playervalue['heros']): #判断存疑 如果机甲的chara是 meta 这里面需要修改为dva 如果不是meta则不需要修改 if used_hero_value['chara'] == value['object']['chara']: heroisexsit = 1 - player_arr[playerindex]['heros'][used_hero_index]['Demechdie'] += 1 - player_arr[playerindex]['heros'][used_hero_index]['Demechassist die'] += total_demech_assistdie + players_arr[player_ind]['heros'][used_hero_index]['Demechdie'] += 1 + players_arr[player_ind]['heros'][used_hero_index]['Demechassist die'] += total_demech_assistdie if value['critical kill'] == 'Y': - player_arr[playerindex]['heros'][used_hero_index]['Demechcritical die'] += 1 + players_arr[player_ind]['heros'][used_hero_index]['Demechcritical die'] += 1 break if heroisexsit == 0: newhero = deepcopy(heros) newhero['chara'] = value['object']['chara'] newhero['Demechdie'] = 1 newhero['Demechassist die'] = total_demech_assistdie - player_arr[playerindex]['totalhero'] += 1 + players_arr[player_ind]['totalhero'] += 1 if value['critical kill'] == 'Y': newhero['Demechcritical die'] = 1 - player_arr[playerindex]['heros'].append(newhero) + players_arr[player_ind]['heros'].append(newhero) From c060e03c925e5d13ddbe36db7f76974027ef9004 Mon Sep 17 00:00:00 2001 From: ForYou <446529127@qq.com> Date: Mon, 10 Sep 2018 16:34:04 +0800 Subject: [PATCH 33/57] add some player data --- ora/stats/single_match_stats.py | 48 ++++++++++++++++++++++++++++++--- 1 file changed, 44 insertions(+), 4 deletions(-) diff --git a/ora/stats/single_match_stats.py b/ora/stats/single_match_stats.py index 7a99472..776eddc 100644 --- a/ora/stats/single_match_stats.py +++ b/ora/stats/single_match_stats.py @@ -17,6 +17,7 @@ class PlayerStats: def __init__(self, index): self.index = index self.num_charas_used = 0 + self.charas_list = [] self.elims = 0 self.deaths = 0 self.resurrects = 0 @@ -95,9 +96,10 @@ def _new_teamfight(self): class FrameStats: def __init__(self, frame, last_frame_data=None): + self.frame = frame if last_frame_data: - self = copy.deepcopy(last_frame_data) - self.last_frame_data = last_frame_data + self.last_frame_data = deepcopy(last_frame_data) + self.players = self.last_frame_data.players return self.last_frame_data = None @@ -108,10 +110,48 @@ def __init__(self, frame, last_frame_data=None): self.basics = BasicStats() self.time = 0 self.tf_index = 0 # index of current teamfight - + def _update_player(self, player): - pass + self._update_player_charas(player) + self._update_player_elims(player) + self._update_player_deaths(player) + self._update_player_resurrects(player) + self._update_player_resurrected(player) + + def _update_player_charas(self, player_ind): + hero = [] + for elim_ind, elim in enumerate(self.frame): + if elim.subject.player == player_ind: + hero.append(elim.subject.chara) + if elim.object.player == player_ind: + hero.append(elim.object.chara) + for player in elim['assist']: + if elim[player]['player'] == player_ind: + hero.append(elim[player]['hero']) + self.players[player_ind].charas_list = list(set(self.players[player_ind].charas_list + hero)) + self.players[player_ind].num_charas_used = len(self.players[player_ind].charas_list) + + def _update_player_elims(self, player_ind): + for elim_ind, elim in enumerate(self.frame): + if elim.action == "Eliminate" and elim.subject.player == player_ind: + self.players[player_ind].elims += 1 + + def _update_player_deaths(self, player_ind): + for death_ind, death in enumerate(self.frame): + if death.action == "Eliminate" and death.object.player == player_ind: + self.players[player_ind].deaths += 1 + + def _update_player_resurrects(self, player_ind): + for resurrect_ind, resurrect in enumerate(self.frame): + if resurrect.action == "Resurrect" and resurrect.subject.player == player_ind: + self.players[player_ind].resurrects += 1 + + def _update_player_resurrected(self, player_ind): + for resurrect_ind, resurrect in enumerate(self.frame): + if resurrect.action == "Resurrect" and resurrect.object.player == player_ind: + self.players[player_ind].resurrected += 1 + From 9a295b8987608a8eec240122777af01219f2da9f Mon Sep 17 00:00:00 2001 From: ForYou <446529127@qq.com> Date: Mon, 10 Sep 2018 17:28:15 +0800 Subject: [PATCH 34/57] add some player data and modify some bug --- ora/stats/single_match_stats.py | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/ora/stats/single_match_stats.py b/ora/stats/single_match_stats.py index 776eddc..885aca6 100644 --- a/ora/stats/single_match_stats.py +++ b/ora/stats/single_match_stats.py @@ -99,7 +99,7 @@ def __init__(self, frame, last_frame_data=None): self.frame = frame if last_frame_data: self.last_frame_data = deepcopy(last_frame_data) - self.players = self.last_frame_data.players + self.players = self.last_frame_data['players'] return self.last_frame_data = None @@ -118,14 +118,16 @@ def _update_player(self, player): self._update_player_deaths(player) self._update_player_resurrects(player) self._update_player_resurrected(player) + self._update_player_critical_elims(player) + self._update_player_ratio_critical_elim(player)# 必须得在_update_player_elims和_update_player_critical_elims后面 def _update_player_charas(self, player_ind): hero = [] for elim_ind, elim in enumerate(self.frame): - if elim.subject.player == player_ind: - hero.append(elim.subject.chara) - if elim.object.player == player_ind: - hero.append(elim.object.chara) + if elim['subject']['player'] == player_ind: + hero.append(elim['subject']['chara']) + if elim['object']['player'] == player_ind: + hero.append(elim['object'].['chara']) for player in elim['assist']: if elim[player]['player'] == player_ind: hero.append(elim[player]['hero']) @@ -134,24 +136,33 @@ def _update_player_charas(self, player_ind): def _update_player_elims(self, player_ind): for elim_ind, elim in enumerate(self.frame): - if elim.action == "Eliminate" and elim.subject.player == player_ind: + if elim['action'] == "Eliminate" and elim['subject']['player'] == player_ind: self.players[player_ind].elims += 1 def _update_player_deaths(self, player_ind): for death_ind, death in enumerate(self.frame): - if death.action == "Eliminate" and death.object.player == player_ind: + if death['action'] == "Eliminate" and death['object']['player'] == player_ind: self.players[player_ind].deaths += 1 def _update_player_resurrects(self, player_ind): for resurrect_ind, resurrect in enumerate(self.frame): - if resurrect.action == "Resurrect" and resurrect.subject.player == player_ind: + if resurrect['action'] == "Resurrect" and resurrect['subject']['player'] == player_ind: self.players[player_ind].resurrects += 1 def _update_player_resurrected(self, player_ind): for resurrect_ind, resurrect in enumerate(self.frame): - if resurrect.action == "Resurrect" and resurrect.object.player == player_ind: + if resurrect['action'] == "Resurrect" and resurrect['object']['player'] == player_ind: self.players[player_ind].resurrected += 1 + def _update_player_critical_elims(self, player_ind): + for elim_ind, elim in enumerate(self.frame): + if elim['action'] == "Eliminate" and elim['subject']['player'] == player_ind and elim['critical kill'] == 'Y': + self.players[player_ind].critical_elims += 1 + + def _update_player_ratio_critical_elim(self, player_ind): # 输出为%前的整数 不含% + self.players[player_ind].ratio_critical_elim = self.players[player_ind].critical_elims*100/\ + self.players[player_ind].elims + From 1a0fdc26f5fc099b1e15e67d875183641e97fab2 Mon Sep 17 00:00:00 2001 From: ForYou <446529127@qq.com> Date: Tue, 11 Sep 2018 09:28:50 +0800 Subject: [PATCH 35/57] more . --- ora/stats/single_match_stats.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/ora/stats/single_match_stats.py b/ora/stats/single_match_stats.py index 885aca6..24d21ad 100644 --- a/ora/stats/single_match_stats.py +++ b/ora/stats/single_match_stats.py @@ -111,7 +111,6 @@ def __init__(self, frame, last_frame_data=None): self.time = 0 self.tf_index = 0 # index of current teamfight - def _update_player(self, player): self._update_player_charas(player) self._update_player_elims(player) @@ -119,7 +118,7 @@ def _update_player(self, player): self._update_player_resurrects(player) self._update_player_resurrected(player) self._update_player_critical_elims(player) - self._update_player_ratio_critical_elim(player)# 必须得在_update_player_elims和_update_player_critical_elims后面 + self._update_player_ratio_critical_elim(player) # 必须得在_update_player_elims和_update_player_critical_elims后面 def _update_player_charas(self, player_ind): hero = [] @@ -127,7 +126,7 @@ def _update_player_charas(self, player_ind): if elim['subject']['player'] == player_ind: hero.append(elim['subject']['chara']) if elim['object']['player'] == player_ind: - hero.append(elim['object'].['chara']) + hero.append(elim['object']['chara']) for player in elim['assist']: if elim[player]['player'] == player_ind: hero.append(elim[player]['hero']) @@ -159,8 +158,8 @@ def _update_player_critical_elims(self, player_ind): if elim['action'] == "Eliminate" and elim['subject']['player'] == player_ind and elim['critical kill'] == 'Y': self.players[player_ind].critical_elims += 1 - def _update_player_ratio_critical_elim(self, player_ind): # 输出为%前的整数 不含% - self.players[player_ind].ratio_critical_elim = self.players[player_ind].critical_elims*100/\ + def _update_player_ratio_critical_elim(self, player_ind): # 输出为%前的整数 不含% + self.players[player_ind].ratio_critical_elim = self.players[player_ind].critical_elims*100 / \ self.players[player_ind].elims From 8084be76a5a0ba4bc9e7d4325f61c784c252d18f Mon Sep 17 00:00:00 2001 From: ForYou <446529127@qq.com> Date: Tue, 11 Sep 2018 15:21:05 +0800 Subject: [PATCH 36/57] add player data function --- ora/stats/single_match_stats.py | 56 ++++++++++++++++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/ora/stats/single_match_stats.py b/ora/stats/single_match_stats.py index 24d21ad..b886ffa 100644 --- a/ora/stats/single_match_stats.py +++ b/ora/stats/single_match_stats.py @@ -4,6 +4,7 @@ import zipfile import json from copy import deepcopy +import ora.overwatch as OW sys.path.append('../utils') from utils import stats @@ -100,6 +101,7 @@ def __init__(self, frame, last_frame_data=None): if last_frame_data: self.last_frame_data = deepcopy(last_frame_data) self.players = self.last_frame_data['players'] + self.time = self.last_frame_data['time'] return self.last_frame_data = None @@ -119,6 +121,14 @@ def _update_player(self, player): self._update_player_resurrected(player) self._update_player_critical_elims(player) self._update_player_ratio_critical_elim(player) # 必须得在_update_player_elims和_update_player_critical_elims后面 + self._update_player_elims_per_10min(player) # 得在_update_player_elims后执行 + self._update_player_deaths_per_10min(player) # 得在_update_player_deaths后执行 + self._update_player_dps_elims(player) + self._update_player_tank_elims(player) + self._update_player_healer_elims(player) + self._update_player_elimed_by_dps(player) + self._update_player_elimed_by_tank(player) + self._update_player_elimed_by_healer(player) def _update_player_charas(self, player_ind): hero = [] @@ -155,13 +165,57 @@ def _update_player_resurrected(self, player_ind): def _update_player_critical_elims(self, player_ind): for elim_ind, elim in enumerate(self.frame): - if elim['action'] == "Eliminate" and elim['subject']['player'] == player_ind and elim['critical kill'] == 'Y': + if elim['action'] == "Eliminate" and elim['subject']['player'] == player_ind\ + and elim['critical kill'] == 'Y': self.players[player_ind].critical_elims += 1 def _update_player_ratio_critical_elim(self, player_ind): # 输出为%前的整数 不含% self.players[player_ind].ratio_critical_elim = self.players[player_ind].critical_elims*100 / \ self.players[player_ind].elims + def _update_player_elims_per_10min(self, player_ind): + self.players[player_ind].elims_per_10min = self.players[player_ind].elims*10*60/self.time + + def _update_player_deaths_per_10min(self, player_ind): + self.players[player_ind].deaths_per_10min = self.players[player_ind].deaths*10*60/self.time + + def _update_player_dps_elims(self, player_ind): + for elim_ind, elim in enumerate(self.frame): + if elim['action'] == "Eliminate" and elim['subject']['player'] == player_ind \ + and elim['subject']['chara'] in OW.dps: + self.players[player_ind].dps_elims += 1 + + def _update_player_tank_elims(self, player_ind): + for elim_ind, elim in enumerate(self.frame): + if elim['action'] == "Eliminate" and elim['subject']['player'] == player_ind \ + and elim['subject']['chara'] in OW.tank: + self.players[player_ind].tank_elims += 1 + + def _update_player_healer_elims(self, player_ind): + for elim_ind, elim in enumerate(self.frame): + if elim['action'] == "Eliminate" and elim['subject']['player'] == player_ind \ + and elim['subject']['chara'] in OW.healer: + self.players[player_ind].healer_elims += 1 + + def _update_player_elimed_by_dps(self, player_ind): + for elim_ind, elim in enumerate(self.frame): + if elim['action'] == "Eliminate" and elim['object']['player'] == player_ind \ + and elim['subject']['chara'] in OW.dps: + self.players[player_ind].elimed_by_dps += 1 + + def _update_player_elimed_by_tank(self, player_ind): + for elim_ind, elim in enumerate(self.frame): + if elim['action'] == "Eliminate" and elim['object']['player'] == player_ind \ + and elim['subject']['chara'] in OW.tank: + self.players[player_ind].elimed_by_tank += 1 + + def _update_player_elimed_by_healer(self, player_ind): + for elim_ind, elim in enumerate(self.frame): + if elim['action'] == "Eliminate" and elim['object']['player'] == player_ind \ + and elim['subject']['chara'] in OW.healer: + self.players[player_ind].elimed_by_healer += 1 + + From c2b32ba0f9d4ab8f7309f68e76a2ddb4e2b2ded3 Mon Sep 17 00:00:00 2001 From: Yiqing Zhu Date: Tue, 11 Sep 2018 10:48:08 +0200 Subject: [PATCH 37/57] add chara categories --- ora/overwatch.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ora/overwatch.py b/ora/overwatch.py index 6855f34..cac0a2c 100644 --- a/ora/overwatch.py +++ b/ora/overwatch.py @@ -101,6 +101,7 @@ def get_ui_variable(name, gametype, version): WINSTON = "winston" ZARYA = "zarya" ZENYATTA = "zenyatta" +WRECKINGBALL = "wreckingball" MEKA = "meka" RIPTIRE = "riptire" @@ -116,6 +117,13 @@ def get_ui_variable(name, gametype, version): SYMMETRA, TORBJON, TRACER, WIDOWMAKER, WINSTON, ZARYA, ZENYATTA] +SUPPORT_LIST = [ANA, BRIGITTE, LUCIO, MERCY, MOIRA, ZENYATTA] + +DPS_LIST = [BASTION, DOOMFIST, GENJI, HANZO, JUNKRAT, MCCREE, MEI, PHARAH, REAPER, + SOLDIER76, SOMBRA, SYMMETRA, TORBJON, TRACER, WIDOWMAKER] + +TANK_LIST = [DVA, ORISA, REINHARDT, ROADHOG, WINSTON, ZARYA, WRECKINGBALL] + ASSIST_CHARACTER_LIST = [ANA, GENJI, JUNKRAT, MCCREE, MEI, MERCY, ORISA, REINHARDT, ROADHOG, SOMBRA, ZARYA, ZENYATTA] From a37001bc72183a1dcea77eaedd45d5c05111bfde Mon Sep 17 00:00:00 2001 From: ForYou <446529127@qq.com> Date: Tue, 11 Sep 2018 16:53:22 +0800 Subject: [PATCH 38/57] dps tank support --- ora/stats/single_match_stats.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ora/stats/single_match_stats.py b/ora/stats/single_match_stats.py index b886ffa..31e9eca 100644 --- a/ora/stats/single_match_stats.py +++ b/ora/stats/single_match_stats.py @@ -182,37 +182,37 @@ def _update_player_deaths_per_10min(self, player_ind): def _update_player_dps_elims(self, player_ind): for elim_ind, elim in enumerate(self.frame): if elim['action'] == "Eliminate" and elim['subject']['player'] == player_ind \ - and elim['subject']['chara'] in OW.dps: + and elim['subject']['chara'] in OW.DPS_LIST: self.players[player_ind].dps_elims += 1 def _update_player_tank_elims(self, player_ind): for elim_ind, elim in enumerate(self.frame): if elim['action'] == "Eliminate" and elim['subject']['player'] == player_ind \ - and elim['subject']['chara'] in OW.tank: + and elim['subject']['chara'] in OW.TANK_LIST: self.players[player_ind].tank_elims += 1 def _update_player_healer_elims(self, player_ind): for elim_ind, elim in enumerate(self.frame): if elim['action'] == "Eliminate" and elim['subject']['player'] == player_ind \ - and elim['subject']['chara'] in OW.healer: + and elim['subject']['chara'] in OW.SUPPORT_LIST: self.players[player_ind].healer_elims += 1 def _update_player_elimed_by_dps(self, player_ind): for elim_ind, elim in enumerate(self.frame): if elim['action'] == "Eliminate" and elim['object']['player'] == player_ind \ - and elim['subject']['chara'] in OW.dps: + and elim['subject']['chara'] in OW.DPS_LIST: self.players[player_ind].elimed_by_dps += 1 def _update_player_elimed_by_tank(self, player_ind): for elim_ind, elim in enumerate(self.frame): if elim['action'] == "Eliminate" and elim['object']['player'] == player_ind \ - and elim['subject']['chara'] in OW.tank: + and elim['subject']['chara'] in OW.TANK_LIST: self.players[player_ind].elimed_by_tank += 1 def _update_player_elimed_by_healer(self, player_ind): for elim_ind, elim in enumerate(self.frame): if elim['action'] == "Eliminate" and elim['object']['player'] == player_ind \ - and elim['subject']['chara'] in OW.healer: + and elim['subject']['chara'] in OW.SUPPORT_LIST: self.players[player_ind].elimed_by_healer += 1 From cac0c91c6aebce7f3de9e686beeb988966cfaad4 Mon Sep 17 00:00:00 2001 From: Appcell Date: Tue, 18 Sep 2018 15:11:22 +0200 Subject: [PATCH 39/57] modify stats structure --- ora/stats/single_match_stats.py | 302 ++++++++++++++++++-------------- 1 file changed, 175 insertions(+), 127 deletions(-) diff --git a/ora/stats/single_match_stats.py b/ora/stats/single_match_stats.py index 31e9eca..5e11826 100644 --- a/ora/stats/single_match_stats.py +++ b/ora/stats/single_match_stats.py @@ -15,36 +15,182 @@ def time_to_frame(time): class PlayerStats: - def __init__(self, index): - self.index = index - self.num_charas_used = 0 - self.charas_list = [] - self.elims = 0 - self.deaths = 0 - self.resurrects = 0 - self.resurrected = 0 - self.ult_charge = 0 - self.avg_elims_during_tf = 0 - self.avg_deaths_during_tf = 0 - self.avg_elim_ind_during_tf = 0 - self.avg_death_ind_during_tf = 0 - self.elims_per_10min = 0 - self.deaths_per_10min = 0 - self.dps_elims = 0 - self.elimed_by_dps = 0 - self.tank_elims = 0 - self.elimed_by_tank = 0 - self.healer_elims = 0 - self.elimed_by_healer = 0 - self.first_elims = 0 - self.first_elimed = 0 - self.critical_elims = 0 - self.ratio_critical_elim = 0 - self.immediate_elimed = 0 - self.ult_elim = 0 + def __init__(self, index, frame_index = 0, tf_index = 0, prev_data = None): + + if prev_data != None: + self = deepcopy(prev_data) + else: + self.num_charas_used = 0 + self.charas_list = [] + + self.elims = 0 + self.deaths = 0 + self.resurrects = 0 + self.resurrected = 0 + self.ult_charge = 0 + + self.tf_elims_list = [0] + self.tf_deaths_list = [0] + self.tf_elim_index_list = [0] + self.tf_death_index_list = [0] + self.avg_tf_elims = 0 + self.avg_tf_deaths = 0 + self.avg_tf_elim_index = 0 + self.avg_tf_death_index = 0 + + self.first_elims = 0 + self.first_elimed = 0 + + self.elims_per_10min = 0 + self.deaths_per_10min = 0 + self.dps_elims = 0 + self.elimed_by_dps = 0 + self.tank_elims = 0 + self.elimed_by_tank = 0 + self.healer_elims = 0 + self.elimed_by_healer = 0 + + self.critical_elims = 0 + self.ratio_critical_elim = 0 + + self.index = index + self.tf_index = tf_index + self.frame_index = frame_index + self.prev_data = prev_data return + def update(self): + self._update_charas() + self._update_elims() + self._update_deaths() + self._update_resurrects() + self._update_resurrected() + self._update_ult_charge() + + self._update_critical_elims() + + # 必须得在_update_elims和_update_critical_elims后面 + # 输出为%前的整数 不含% + self._update_ratio_critical_elim() + + # 得在_update_elims后执行 + self._update_elims_per_10min() + + # 得在_update_deaths后执行 + self._update_deaths_per_10min() + + self._update_dps_elims() + self._update_tank_elims() + self._update_support_elims() + self._update_elimed_by_dps() + self._update_elimed_by_tank() + self._update_elimed_by_support() + + def _update_tf(self): + if self.tf_index != self.prev_data.tf_index: + self.tf_elims_list.append(0) + self.tf_deaths_list.append(0) + self.tf_elim_index_list.append(0) + self.tf_death_index_list.append(0) + flag_first_elim = False + flag_first_death = False + for event in EventsData[self.frame_index]: + if event["action"] == "Eliminate" and event['subject']['player'] == self.index: + self.tf_elims_list[-1] += 1 + if self.tf_index != self.prev_data.tf_index: + flag_first_elim = True + if event["action"] == "Eliminate" and event['object']['player'] == self.index: + self.tf_deaths_list[-1] += 1 + if self.tf_index != self.prev_data.tf_index: + flag_first_elim = True + + + def _update_charas(self): + curr_chara = FrameData[self.frame_index]["players"][self.index]["chara"] + if num_charas_used > 0: + if curr_chara != charas_list[-1]: + charas_list.append(curr_chara) + if ~(curr_chara in charas_list): + num_charas_used += 1 + else: + num_charas_used += 1 + charas_list.append(curr_chara) + + def _update_elims(self): + for event in EventsData[self.frame_index]: + if event["action"] == "Eliminate" and event['subject']['player'] == self.index: + self.elims += 1 + + def _update_deaths(self): + for event in EventsData[self.frame_index]: + if event["action"] == "Eliminate" and event['object']['player'] == self.index: + self.deaths += 1 + + def _update_resurrects(self): + for event in EventsData[self.frame_index]: + if event["action"] == "Resurrect" and event['subject']['player'] == self.index: + self.resurrects += 1 + + def _update_resurrected(self): + for event in EventsData[self.frame_index]: + if event["action"] == "Resurrect" and event['object']['player'] == self.index: + self.resurrected += 1 + + def _update_ult_charge(): + self.ult_charge = FrameData[self.frame_index]["players"][self.index]["ult_charge"] + + def _update_critical_elims(self): + for event in EventsData[self.frame_index]: + if event["action"] == "Eliminate" and event['subject']['player'] == self.index \ + and elim['critical kill'] == 'Y': + self.critical_elims += 1 + + def _update_ratio_critical_elim(self): + self.ratio_critical_elim = self.critical_elims * 100 / self.elims + + def _update_elims_per_10min(self): + self.elims_per_10min = self.elims * 10 * 60/self.time + + def _update_deaths_per_10min(self): + self.deaths_per_10min = self.deaths * 10 * 60/self.time + + def _update_dps_elims(self): + for event in EventsData[self.frame_index]: + if event["action"] == "Eliminate" and event['subject']['player'] == self.index\ + and event['subject']['chara'] in OW.DPS_LIST: + self.dps_elims += 1 + + def _update_tank_elims(self): + for event in EventsData[self.frame_index]: + if event["action"] == "Eliminate" and event['subject']['player'] == self.index\ + and event['subject']['chara'] in OW.TANK_LIST: + self.tank_elims += 1 + + def _update_support_elims(self): + for event in EventsData[self.frame_index]: + if event["action"] == "Eliminate" and event['subject']['player'] == self.index\ + and event['subject']['chara'] in OW.SUPPORT_LIST: + self.support_elims += 1 + + def _update_elimed_by_dps(self): + for event in EventsData[self.frame_index]: + if event["action"] == "Eliminate" and event['object']['player'] == self.index\ + and event['subject']['chara'] in OW.DPS_LIST: + self.elimed_by_dps += 1 + + def _update_elimed_by_tank(self): + for event in EventsData[self.frame_index]: + if event["action"] == "Eliminate" and event['object']['player'] == self.index\ + and event['subject']['chara'] in OW.TANK_LIST: + self.elimed_by_tank += 1 + + def _update_elimed_by_support(self): + for event in EventsData[self.frame_index]: + if event["action"] == "Eliminate" and event['object']['player'] == self.index\ + and event['subject']['chara'] in OW.SUPPORT_LIST: + self.elimed_by_healer += 1 + class BasicStats: def __init__(self): @@ -114,106 +260,8 @@ def __init__(self, frame, last_frame_data=None): self.tf_index = 0 # index of current teamfight def _update_player(self, player): - self._update_player_charas(player) - self._update_player_elims(player) - self._update_player_deaths(player) - self._update_player_resurrects(player) - self._update_player_resurrected(player) - self._update_player_critical_elims(player) - self._update_player_ratio_critical_elim(player) # 必须得在_update_player_elims和_update_player_critical_elims后面 - self._update_player_elims_per_10min(player) # 得在_update_player_elims后执行 - self._update_player_deaths_per_10min(player) # 得在_update_player_deaths后执行 - self._update_player_dps_elims(player) - self._update_player_tank_elims(player) - self._update_player_healer_elims(player) - self._update_player_elimed_by_dps(player) - self._update_player_elimed_by_tank(player) - self._update_player_elimed_by_healer(player) - - def _update_player_charas(self, player_ind): - hero = [] - for elim_ind, elim in enumerate(self.frame): - if elim['subject']['player'] == player_ind: - hero.append(elim['subject']['chara']) - if elim['object']['player'] == player_ind: - hero.append(elim['object']['chara']) - for player in elim['assist']: - if elim[player]['player'] == player_ind: - hero.append(elim[player]['hero']) - self.players[player_ind].charas_list = list(set(self.players[player_ind].charas_list + hero)) - self.players[player_ind].num_charas_used = len(self.players[player_ind].charas_list) - - def _update_player_elims(self, player_ind): - for elim_ind, elim in enumerate(self.frame): - if elim['action'] == "Eliminate" and elim['subject']['player'] == player_ind: - self.players[player_ind].elims += 1 - - def _update_player_deaths(self, player_ind): - for death_ind, death in enumerate(self.frame): - if death['action'] == "Eliminate" and death['object']['player'] == player_ind: - self.players[player_ind].deaths += 1 - - def _update_player_resurrects(self, player_ind): - for resurrect_ind, resurrect in enumerate(self.frame): - if resurrect['action'] == "Resurrect" and resurrect['subject']['player'] == player_ind: - self.players[player_ind].resurrects += 1 - - def _update_player_resurrected(self, player_ind): - for resurrect_ind, resurrect in enumerate(self.frame): - if resurrect['action'] == "Resurrect" and resurrect['object']['player'] == player_ind: - self.players[player_ind].resurrected += 1 - - def _update_player_critical_elims(self, player_ind): - for elim_ind, elim in enumerate(self.frame): - if elim['action'] == "Eliminate" and elim['subject']['player'] == player_ind\ - and elim['critical kill'] == 'Y': - self.players[player_ind].critical_elims += 1 - - def _update_player_ratio_critical_elim(self, player_ind): # 输出为%前的整数 不含% - self.players[player_ind].ratio_critical_elim = self.players[player_ind].critical_elims*100 / \ - self.players[player_ind].elims - - def _update_player_elims_per_10min(self, player_ind): - self.players[player_ind].elims_per_10min = self.players[player_ind].elims*10*60/self.time - - def _update_player_deaths_per_10min(self, player_ind): - self.players[player_ind].deaths_per_10min = self.players[player_ind].deaths*10*60/self.time - - def _update_player_dps_elims(self, player_ind): - for elim_ind, elim in enumerate(self.frame): - if elim['action'] == "Eliminate" and elim['subject']['player'] == player_ind \ - and elim['subject']['chara'] in OW.DPS_LIST: - self.players[player_ind].dps_elims += 1 - - def _update_player_tank_elims(self, player_ind): - for elim_ind, elim in enumerate(self.frame): - if elim['action'] == "Eliminate" and elim['subject']['player'] == player_ind \ - and elim['subject']['chara'] in OW.TANK_LIST: - self.players[player_ind].tank_elims += 1 - - def _update_player_healer_elims(self, player_ind): - for elim_ind, elim in enumerate(self.frame): - if elim['action'] == "Eliminate" and elim['subject']['player'] == player_ind \ - and elim['subject']['chara'] in OW.SUPPORT_LIST: - self.players[player_ind].healer_elims += 1 - - def _update_player_elimed_by_dps(self, player_ind): - for elim_ind, elim in enumerate(self.frame): - if elim['action'] == "Eliminate" and elim['object']['player'] == player_ind \ - and elim['subject']['chara'] in OW.DPS_LIST: - self.players[player_ind].elimed_by_dps += 1 - - def _update_player_elimed_by_tank(self, player_ind): - for elim_ind, elim in enumerate(self.frame): - if elim['action'] == "Eliminate" and elim['object']['player'] == player_ind \ - and elim['subject']['chara'] in OW.TANK_LIST: - self.players[player_ind].elimed_by_tank += 1 - - def _update_player_elimed_by_healer(self, player_ind): - for elim_ind, elim in enumerate(self.frame): - if elim['action'] == "Eliminate" and elim['object']['player'] == player_ind \ - and elim['subject']['chara'] in OW.SUPPORT_LIST: - self.players[player_ind].elimed_by_healer += 1 + + From 7ad64ce3df8afa06ff0f12490f69e9c2c35d1665 Mon Sep 17 00:00:00 2001 From: Appcell Date: Tue, 18 Sep 2018 20:23:04 +0200 Subject: [PATCH 40/57] finish player stats --- ora/stats/single_match_stats.py | 83 ++++++++++++++++++++++++++------- 1 file changed, 66 insertions(+), 17 deletions(-) diff --git a/ora/stats/single_match_stats.py b/ora/stats/single_match_stats.py index 5e11826..a7ff0d4 100644 --- a/ora/stats/single_match_stats.py +++ b/ora/stats/single_match_stats.py @@ -4,6 +4,7 @@ import zipfile import json from copy import deepcopy +from statistics import mean import ora.overwatch as OW sys.path.append('../utils') @@ -87,27 +88,75 @@ def update(self): self._update_elimed_by_tank() self._update_elimed_by_support() + self._update_tf() + self._update_avg_tf_elims() + self._update_avg_tf_deaths() + self._update_avg_elim_index() + self._update_avg_death_index() + def _update_tf(self): if self.tf_index != self.prev_data.tf_index: self.tf_elims_list.append(0) self.tf_deaths_list.append(0) self.tf_elim_index_list.append(0) self.tf_death_index_list.append(0) + flag_first_elim = False flag_first_death = False + for event in EventsData[self.frame_index]: - if event["action"] == "Eliminate" and event['subject']['player'] == self.index: + if event["action"] == "Eliminate" and event['subject']['player_ind'] == self.index: self.tf_elims_list[-1] += 1 - if self.tf_index != self.prev_data.tf_index: + if tf_elim_index_list[-1] == 0: flag_first_elim = True - if event["action"] == "Eliminate" and event['object']['player'] == self.index: + if event["action"] == "Eliminate" and event['object']['player_ind'] == self.index: self.tf_deaths_list[-1] += 1 - if self.tf_index != self.prev_data.tf_index: + if tf_death_index_list[-1] == 0: flag_first_elim = True + # Go over previous frames, calculate team-wise elim/death index + if flag_first_elim: + total_team_tf_elim = 0 + starting_frame_ind = TeamfightStats.data[self.tf_index]["starting_frame"] + if self.tf_index == len(TeamfightStats.data) - 1: + ending_frame_ind = len(EventsData) - 1 + for frame_ind in range(starting_frame_ind, self.frame_index): + frame = EventsData[frame_ind] + for event in frame: + if event["action"] == "Eliminate" \ + and ((event['subject']['player_ind'] < 6 and self.index < 6) \ + or (event['subject']['player_ind'] >= 6 and self.index >= 6)): + total_team_tf_elim += 1 + self.tf_elim_index_list[-1] = total_team_tf_elim + 1 + + if flag_first_death: + total_team_tf_death = 0 + starting_frame_ind = TeamfightStats.data[self.tf_index]["starting_frame"] + if self.tf_index == len(TeamfightStats.data) - 1: + ending_frame_ind = len(EventsData) - 1 + for frame_ind in range(starting_frame_ind, self.frame_index): + frame = EventsData[frame_ind] + for event in frame: + if event["action"] == "Eliminate" \ + and ((event['object']['player_ind'] < 6 and self.index < 6) \ + or (event['oject']['player_ind'] >= 6 and self.index >= 6)): + total_team_tf_death += 1 + self.tf_death_index_list[-1] = total_team_tf_death + 1 + + def _update_avg_tf_elims(self): + return mean(self.tf_elims_list) + + def _update_avg_tf_deaths(self): + return mean(self.tf_deaths_list) + + def _update_avg_elim_index(self): + return mean(self.tf_elim_index_list) + + def _update_avg_death_index(self): + return mean(self.tf_death_index_list) def _update_charas(self): - curr_chara = FrameData[self.frame_index]["players"][self.index]["chara"] + curr_chara = FramesData[self.frame_index]["players"][self.index]["chara"] if num_charas_used > 0: if curr_chara != charas_list[-1]: charas_list.append(curr_chara) @@ -119,30 +168,30 @@ def _update_charas(self): def _update_elims(self): for event in EventsData[self.frame_index]: - if event["action"] == "Eliminate" and event['subject']['player'] == self.index: + if event["action"] == "Eliminate" and event['subject']['player_ind'] == self.index: self.elims += 1 def _update_deaths(self): for event in EventsData[self.frame_index]: - if event["action"] == "Eliminate" and event['object']['player'] == self.index: + if event["action"] == "Eliminate" and event['object']['player_ind'] == self.index: self.deaths += 1 def _update_resurrects(self): for event in EventsData[self.frame_index]: - if event["action"] == "Resurrect" and event['subject']['player'] == self.index: + if event["action"] == "Resurrect" and event['subject']['player_ind'] == self.index: self.resurrects += 1 def _update_resurrected(self): for event in EventsData[self.frame_index]: - if event["action"] == "Resurrect" and event['object']['player'] == self.index: + if event["action"] == "Resurrect" and event['object']['player_ind'] == self.index: self.resurrected += 1 def _update_ult_charge(): - self.ult_charge = FrameData[self.frame_index]["players"][self.index]["ult_charge"] + self.ult_charge = FramesData[self.frame_index]["players"][self.index]["ult_charge"] def _update_critical_elims(self): for event in EventsData[self.frame_index]: - if event["action"] == "Eliminate" and event['subject']['player'] == self.index \ + if event["action"] == "Eliminate" and event['subject']['player_ind'] == self.index \ and elim['critical kill'] == 'Y': self.critical_elims += 1 @@ -157,37 +206,37 @@ def _update_deaths_per_10min(self): def _update_dps_elims(self): for event in EventsData[self.frame_index]: - if event["action"] == "Eliminate" and event['subject']['player'] == self.index\ + if event["action"] == "Eliminate" and event['subject']['player_ind'] == self.index\ and event['subject']['chara'] in OW.DPS_LIST: self.dps_elims += 1 def _update_tank_elims(self): for event in EventsData[self.frame_index]: - if event["action"] == "Eliminate" and event['subject']['player'] == self.index\ + if event["action"] == "Eliminate" and event['subject']['player_ind'] == self.index\ and event['subject']['chara'] in OW.TANK_LIST: self.tank_elims += 1 def _update_support_elims(self): for event in EventsData[self.frame_index]: - if event["action"] == "Eliminate" and event['subject']['player'] == self.index\ + if event["action"] == "Eliminate" and event['subject']['player_ind'] == self.index\ and event['subject']['chara'] in OW.SUPPORT_LIST: self.support_elims += 1 def _update_elimed_by_dps(self): for event in EventsData[self.frame_index]: - if event["action"] == "Eliminate" and event['object']['player'] == self.index\ + if event["action"] == "Eliminate" and event['object']['player_ind'] == self.index\ and event['subject']['chara'] in OW.DPS_LIST: self.elimed_by_dps += 1 def _update_elimed_by_tank(self): for event in EventsData[self.frame_index]: - if event["action"] == "Eliminate" and event['object']['player'] == self.index\ + if event["action"] == "Eliminate" and event['object']['player_ind'] == self.index\ and event['subject']['chara'] in OW.TANK_LIST: self.elimed_by_tank += 1 def _update_elimed_by_support(self): for event in EventsData[self.frame_index]: - if event["action"] == "Eliminate" and event['object']['player'] == self.index\ + if event["action"] == "Eliminate" and event['object']['player_ind'] == self.index\ and event['subject']['chara'] in OW.SUPPORT_LIST: self.elimed_by_healer += 1 From 528d35c95333b08d46d535c22f442d1f19d99a65 Mon Sep 17 00:00:00 2001 From: Appcell Date: Thu, 20 Sep 2018 20:12:30 +0200 Subject: [PATCH 41/57] modify stats struct --- ora/stats/single_match_stats.py | 85 ++++++++++++++++++++++----------- 1 file changed, 57 insertions(+), 28 deletions(-) diff --git a/ora/stats/single_match_stats.py b/ora/stats/single_match_stats.py index a7ff0d4..dab1f5b 100644 --- a/ora/stats/single_match_stats.py +++ b/ora/stats/single_match_stats.py @@ -13,11 +13,60 @@ def time_to_frame(time): pass +class SingleTeamFightStats: -class PlayerStats: + def __init__(self, start_frame=0, end_frame=0): - def __init__(self, index, frame_index = 0, tf_index = 0, prev_data = None): + self.start_frame = start_frame + self.end_frame = end_frame + self.start_time = FramesData[start_frame]["time"] + self.end_time = FramesData[end_frame]["time"] + self.turning_point = 0 + self.ults_used_per_team = [0, 0] + self.ults_used_total = 0 + self.elims_list = [] + return + + def update(self): + pass + + def _update_elims_list(self): + total_team_tf_elim = 0 + starting_frame_ind = TeamfightStats.data[self.tf_index].start_frame + if self.tf_index == len(TeamfightStats.data) - 1: + ending_frame_ind = len(EventsData) - 1 + for frame_ind in range(starting_frame_ind, self.frame_index): + frame = EventsData[frame_ind] + for event in frame: + if event["action"] == "Eliminate" \ + and ((event['subject']['player_ind'] < 6 and self.index < 6) \ + or (event['subject']['player_ind'] >= 6 and self.index >= 6)): + total_team_tf_elim += 1 + self.tf_elim_index_list[-1] = total_team_tf_elim + 1 + + def _update_ults_used(self): + pass + def _update_turning_point(self): + pass + + +class TeamfightStats: + + def __init__(self): + self.data = [] + return + + def _new_teamfight(self): + self.data.append(SingleTeamFightStats()) + return + + def _split_teamfights(self): + pass + + +class PlayerStats: + def __init__(self, index, frame_index = 0, tf_index = 0, prev_data = None): if prev_data != None: self = deepcopy(prev_data) else: @@ -54,7 +103,6 @@ def __init__(self, index, frame_index = 0, tf_index = 0, prev_data = None): self.critical_elims = 0 self.ratio_critical_elim = 0 - self.index = index self.tf_index = tf_index self.frame_index = frame_index @@ -117,7 +165,7 @@ def _update_tf(self): # Go over previous frames, calculate team-wise elim/death index if flag_first_elim: total_team_tf_elim = 0 - starting_frame_ind = TeamfightStats.data[self.tf_index]["starting_frame"] + starting_frame_ind = TeamfightStats.data[self.tf_index].start_frame if self.tf_index == len(TeamfightStats.data) - 1: ending_frame_ind = len(EventsData) - 1 for frame_ind in range(starting_frame_ind, self.frame_index): @@ -131,7 +179,7 @@ def _update_tf(self): if flag_first_death: total_team_tf_death = 0 - starting_frame_ind = TeamfightStats.data[self.tf_index]["starting_frame"] + starting_frame_ind = TeamfightStats.data[self.tf_index].start_frame if self.tf_index == len(TeamfightStats.data) - 1: ending_frame_ind = len(EventsData) - 1 for frame_ind in range(starting_frame_ind, self.frame_index): @@ -144,16 +192,16 @@ def _update_tf(self): self.tf_death_index_list[-1] = total_team_tf_death + 1 def _update_avg_tf_elims(self): - return mean(self.tf_elims_list) + self.avg_tf_elims = mean(self.tf_elims_list) def _update_avg_tf_deaths(self): - return mean(self.tf_deaths_list) + self.avg_tf_deaths = mean(self.tf_deaths_list) def _update_avg_elim_index(self): - return mean(self.tf_elim_index_list) + self.avg_tf_elim_index = mean(self.tf_elim_index_list) def _update_avg_death_index(self): - return mean(self.tf_death_index_list) + self.avg_tf_death_index = mean(self.tf_death_index_list) def _update_charas(self): curr_chara = FramesData[self.frame_index]["players"][self.index]["chara"] @@ -268,26 +316,7 @@ def __init__(self): return -class SingleTeamFightStats: - - def __init__(self, start_time=0, end_time=0): - self.start_time = start_time - self.end_time = end_time - self.turning_point = 0 - self.ults_used_per_team = [0, 0] - self.ults_used_total = 0 - self.elims_list = [] - return - -class TeamfightStats: - def __init__(self): - self.data = [] - return - - def _new_teamfight(self): - self.data.append(SingleTeamFightStats()) - return class FrameStats: From 6ebb4c2398ef5e0f01436b2f0942963e03eda2ef Mon Sep 17 00:00:00 2001 From: chroming Date: Fri, 8 Feb 2019 23:31:05 +0800 Subject: [PATCH 42/57] update gui file name and gui/readme --- .gitignore | 3 + ora/gui/gui.py | 253 ++++++++++++++++++++++++++-------------------- ora/gui/gui_.py | 194 ----------------------------------- ora/gui/readme.md | 2 +- 4 files changed, 149 insertions(+), 303 deletions(-) delete mode 100644 ora/gui/gui_.py diff --git a/.gitignore b/.gitignore index 1f16fe0..ddff75d 100644 --- a/.gitignore +++ b/.gitignore @@ -6,8 +6,11 @@ /credentials /gui /ui_design/source +/ui_design/images +/ui_design/ui_design .idea/ *.DS_Store *.pyc *.orig __pycache__/ + diff --git a/ora/gui/gui.py b/ora/gui/gui.py index c311e53..13331da 100644 --- a/ora/gui/gui.py +++ b/ora/gui/gui.py @@ -1,12 +1,13 @@ -from os.path import join - -from PyQt5.Qt import QIcon - +from PyQt5 import uic, QtCore, QtWidgets, QtGui from widget import * +from style import * +from functions import * +QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling, True) +windowui, QtBaseClass = uic.loadUiType('main.ui') -SRC_PATH = 'D:/GitHub/OverwatchDataAnalysis/ui_design/images' +SRC_PATH = './images' class UiFunc(object): @@ -28,130 +29,166 @@ def _add_widget_item(parent, layout, widget_class, geometry, *args, **kwargs): return widget @staticmethod - def _get_icon(file_name): - return QIcon(join(SRC_PATH, 'icons', file_name)) + def _add_custome_item(listwidget, item_class, *args): + citem = item_class(listwidget, *args) + # citem.setObjectName('DyItem') + item = QtWidgets.QListWidgetItem(listwidget) + item.setSizeHint(citem.sizeHint()) + listwidget.addItem(item) + listwidget.setItemWidget(item, citem) @staticmethod - def _set_background_img(widget, file_name): - widget.setStyleSheet("background-image: url(%s)" % (SRC_PATH + '/bgs/' + file_name)) - - -class UiWidget(UiFunc): - def line_edit_with_label(self, text=''): - label = TextLabel(self) - line_edit = LineEdit(self) - self._set_background_img(line_edit, '') - layout = QtWidgets.QVBoxLayout(self) - layout.addWidget(label) - layout.addWidget(line_edit) - self.layout.addChildLayout(layout) - - def label_with_radio_buttons(self): - label = TextLabel() - button0 = RadioButton() - button1 = RadioButton() - button_group = QtWidgets.QButtonGroup() - button_group.addButton(button0) - button_group.addButton(button1) - layout = QtWidgets.QHBoxLayout(self) - layout.addWidget(label) - layout.addWidget(button0) - layout.addWidget(button1) - - def label_with_check_button(self): - label = TextLabel() - button = CheckButton() - - -class MainUiBaseWidget(MainWindow, UiWidget, WindowDragMixin, ControlButtonMixin): + def _set_hover_icon(widget, normal_file, hover_file): + set_full_icon(widget, normal_file, 'widgets') + widget.setAttribute(Qt.WA_Hover, True) + widget.setStyleSheet('background-image: url(%s)' % (SRC_PATH + '/widgets/' + hover_file)) + + +class BeautiUi(windowui, WindowDragMixin, ControlButtonMixin): def __init__(self): - super(MainUiBaseWidget, self).__init__() - # MainWindow.__init__(self) - # UiFunc.__init__(self) + super(BeautiUi, self).__init__() + self.setupUi(self) + + self.setWindowFlags(Qt.FramelessWindowHint) + self.set_control_button(self.min_button, self.max_button, self.close_button) + + self.tab_listwidget.setFrameShape(QtWidgets.QFrame.NoFrame) + # self.tab_listwidget.setSpacing(50) + self.video_listwidget.setFrameShape(QtWidgets.QFrame.NoFrame) + + self._set_style() + + set_full_icon(self.publish_box, 'switch_on.png') + + def _set_style(self): + for wi, bg in background_imgs.items(): + set_background_img(getattr(self, wi), bg) + + for wi, ic in button_icons.items(): + set_full_icon(getattr(self, wi), ic) + + for wi, cl in background_colors.items(): + set_background_color(getattr(self, wi), cl) + + for wi, tx in plain_text.items(): + set_plain_text(getattr(self, wi), tx) + + for label in get_qclass_child_widgets(self.stackedWidgetPage1, QtWidgets.QLineEdit): + pass + + +class MainUi(QtWidgets.QMainWindow, BeautiUi, UiFunc): + def __init__(self): + super(MainUi, self).__init__() + self._set_tab_listwidget_items([['1_normal.png', '1_selected.png'], ['2_normal.png', '2_selected.png'], ['3_normal.png', '3_selected.png']]) + self.tab_listwidget.setIconSize(QSize(100, 100)) self._init_widget() self._init_connect() + self._init_property() + self._init_default() def _init_widget(self): - self.layout = QtWidgets.QGridLayout() - self.setLayout(self.layout) - self._init_base_widget() + self._add_custome_item(self.video_listwidget, VideoItem, '', '/path/1.mp4', 'WAITING', 'Shanghai Dragons', 'Dallas Fuel', 'replay.png') + self._add_custome_item(self.video_listwidget, VideoItem, '', '/path/1.mp4', 'RUNNING', 'Shanghai Dragons', 'Dallas Fuel', 'replay.png') def _init_connect(self): - self.tab_listwidget.clicked.connect(lambda: self.stacked_widget.setCurrentIndex(self.tab_listwidget.currentRow())) - self.set_control_button(self.min_button, self.max_button, self.close_button, '[]', '{}') - # ControlButtonMixin.__init__(self.min_button, self.max_button, self.exit_button) - - def _init_base_widget(self): - self.tab_layout = QtWidgets.QVBoxLayout() - # self.tab_layout.setGeometry((0, 0, 120, 620)) - self._add_widget_item(self, self.tab_layout, PicLabel, geometry=(0, 0, 120, 67)) - self.tab_listwidget = self._add_widget_item(self, self.tab_layout, ListWidget, geometry=(0, 67, 120, 620)) - self._set_background_img(self.tab_listwidget, 'left_bg.png') - self._add_list_item(self.tab_listwidget, TabItem, "ANALYSIS", 'replay.png') - self._add_list_item(self.tab_listwidget, TabItem, "VIDEO PALY", 'replay.png') - self._add_list_item(self.tab_listwidget, TabItem, "SETTINGS", 'replay.png') - - self.top_layout = QtWidgets.QHBoxLayout() - self.top_group = QtWidgets.QGroupBox(self) - self.top_group.setLayout(self.top_layout) - self._set_background_img(self.top_group, 'top_bg.png') - self.back_button = self._add_widget_item(self.top_group, self.top_layout, ClickButton, geometry=(140, 0, 47, 67), icon_path=self._get_icon('design_03')) - self.help_button = self._add_widget_item(self, self.top_layout, ClickButton, geometry=(1000, 0, 47, 67), icon_path=self._get_icon('design_05')) - self.min_button = self._add_widget_item(self, self.top_layout, ClickButton, geometry=(1050, 0, 47, 67), icon_path=self._get_icon('design_07')) - self.max_button = self._add_widget_item(self, self.top_layout, ClickButton, geometry=(1100, 0, 47, 67), icon_path=self._get_icon('design_08')) - self.close_button = self._add_widget_item(self, self.top_layout, ClickButton, geometry=(1150, 0, 47, 67), icon_path=self._get_icon('design_09')) - - self.stacked_widget = self._add_widget_item(self, None, StackedWidget, geometry=(120, 67, 1080, 733)) - self._init_analysis_tab() - self._init_play_tab() - self._init_setting_tab() - - self.stacked_widget.addWidget(self.analysis_widget) - self.stacked_widget.addWidget(self.play_widget) - self.stacked_widget.addWidget(self.setting_widget) - #self.stacked_widget.setCurrentIndex(1) - - def _init_analysis_tab(self): - self.analysis_widget = QtWidgets.QWidget(self.stacked_widget) - self.analysis_layout = QtWidgets.QGridLayout() - self.analysis_layout.addWidget(self.analysis_widget) - self.video_listwidget = self._add_widget_item(self.analysis_widget, self.analysis_layout, ListWidget, geometry=(0, 0, 620, 640)) - # self._set_background_img(self.video_listwidget, ) - - self._add_list_item(self.video_listwidget, VideoItem, '/path/1.mp4', 'WAITING', 'Shanghai Dragons', 'Dallas Fuel', 'replay.png') - self._add_list_item(self.video_listwidget, VideoItem, '/path/1.mp4', 'RUNNING', 'Shanghai Dragons', 'Dallas Fuel', 'replay.png') - - self.line_edit_with_label() - - def _init_play_tab(self): - self.play_widget = QtWidgets.QWidget(self.stacked_widget) - self.play_layout = QtWidgets.QGridLayout() - self.play_layout.addWidget(self.play_widget) - self._add_widget_item(self.play_widget, self.play_layout, TextLabel, geometry=(0, 0, 100, 100), text='PALY') - - def _init_setting_tab(self): - self.setting_widget = QtWidgets.QWidget(self.stacked_widget) - self.setting_layout = QtWidgets.QGridLayout() - self.setting_layout.addWidget(self.setting_widget) - self._add_widget_item(self.setting_widget, self.setting_layout, TextLabel, geometry=(0, 0, 100, 100), text='SETTTING') - - -class MainUi(MainUiBaseWidget): - def __init__(self): - super(MainUi, self).__init__() + self.tab_listwidget.itemClicked.connect(self._tab_listwidget_item_clicked) + self.video_listwidget.customContextMenuRequested.connect(self._video_list_context_menu) + + self.team_left_lineedit.editingFinished.connect(lambda: self._team_name_edit_finished('left')) + self.team_right_lineedit.editingFinished.connect(lambda: self._team_name_edit_finished('right')) + + self.save_button.clicked.connect(self.save_button_clicked) + self.analyze_button.clicked.connect(self.analyze_button_clicked) + self.analyze_button.clicked.connect(self.select_video) # TODO: need connect to add video button + + def _init_property(self): + + # set player's text to property like self.player_left0_text + for widget in get_qclass_child_widgets(self.team_setting_group, QtWidgets.QLineEdit): + name = widget.objectName + if name.startswith('player_'): + setattr(self, name.rstrip('lineedit') + 'text', widget.text()) def _init_default(self): self.tab_listwidget.setCurrentRow(0) - self.stacked_widget.setCurrentIndex(2) + self.main_stackedwidget.setCurrentIndex(0) + + def _set_tab_listwidget_items(self, pics): + for pic in pics: + item = QtWidgets.QListWidgetItem(QtGui.QIcon(SRC_PATH + '/tab_icons/' + pic[0]), '') + item.normal_icon = QtGui.QIcon(SRC_PATH + '/tab_icons/' + pic[0]) + item.selected_icon = QtGui.QIcon(SRC_PATH + '/tab_icons/' + pic[1]) + self.tab_listwidget.addItem(item) + + def _set_tab_listwidget_normal_icon(self): + for i in range(0, self.tab_listwidget.count()): + item = self.tab_listwidget.item(i) + item.setIcon(item.normal_icon) + + def _tab_listwidget_item_clicked(self, item): + self.main_stackedwidget.setCurrentIndex(self.tab_listwidget.currentRow()) + self._set_tab_listwidget_normal_icon() + item.setIcon(item.selected_icon) + + def _video_list_context_menu(self): + menu = QtWidgets.QMenu() + menu.addAction('删除', lambda _:remove_listwidget_item(self.video_listwidget)) + menu.exec_(QtGui.QCursor.pos()) + + def _team_name_edit_finished(self, team='left'): + current_video_item = self.current_video_item + setattr(current_video_item, 'set_team_%s_text' % team, getattr(self, 'input_team_%s_text' % team)) + + def select_video(self): + filename, _ = QtWidgets.QFileDialog.getOpenFileName(self, u'Select Video', filter="* (*.*)") + self._set_new_video(filename) + + def _set_new_video(self, path): + self._add_custome_item(self.video_listwidget, VideoItem, path, path, 'WAITING', 'Shanghai Dragons', + 'Dallas Fuel', 'replay.png') + + def save_button_clicked(self): + dirname = QtWidgets.QFileDialog.getExistingDirectory(self, u'Select Folder') + self.path_lineedit.setText(dirname) + + def analyze_button_clicked(self): + pass + + @property + def input_team_left_text(self): + return self.team_left_lineedit.text() + + @property + def input_team_right_text(self): + return self.team_right_lineedit.text() + @property + def current_video_item(self): + item = self.video_listwidget.currentItem() + return self.video_listwidget.itemWidget(item) + @property + def is_published(self): + return self.publish_box.isChecked() + @property + def is_owl(self): + return True if self.type_owl_radiobutton.isChecked() else False + @property + def start_time(self): + return self.start_time_lineedit.text() + @property + def end_time(self): + return self.end_time_lineedit.text() if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) + with open('style.qss') as qss: + app.setStyleSheet(qss.read()) w = MainUi() w.show() sys.exit(app.exec_()) \ No newline at end of file diff --git a/ora/gui/gui_.py b/ora/gui/gui_.py deleted file mode 100644 index 912a04a..0000000 --- a/ora/gui/gui_.py +++ /dev/null @@ -1,194 +0,0 @@ - -from PyQt5 import uic, QtCore, QtWidgets, QtGui -from widget import * -from style import * -from functions import * - -QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling, True) -windowui, QtBaseClass = uic.loadUiType('main.ui') - -SRC_PATH = './images' - - -class UiFunc(object): - @staticmethod - def _add_list_item(listwidget, item_class, *args): - citem = item_class(listwidget, *args) - item = QtWidgets.QListWidgetItem(listwidget) - item.setSizeHint(citem.sizeHint()) - listwidget.addItem(item) - listwidget.setItemWidget(item, citem) - - @staticmethod - def _add_widget_item(parent, layout, widget_class, geometry, *args, **kwargs): - widget = widget_class(parent, *args, **kwargs) - widget.setGeometry(*geometry) - if not layout: - layout = parent.layout - layout.addWidget(widget) - return widget - - @staticmethod - def _add_custome_item(listwidget, item_class, *args): - citem = item_class(listwidget, *args) - # citem.setObjectName('DyItem') - item = QtWidgets.QListWidgetItem(listwidget) - item.setSizeHint(citem.sizeHint()) - listwidget.addItem(item) - listwidget.setItemWidget(item, citem) - - @staticmethod - def _set_hover_icon(widget, normal_file, hover_file): - set_full_icon(widget, normal_file, 'widgets') - widget.setAttribute(Qt.WA_Hover, True) - widget.setStyleSheet('background-image: url(%s)' % (SRC_PATH + '/widgets/' + hover_file)) - - -class BeautiUi(windowui, WindowDragMixin, ControlButtonMixin): - def __init__(self): - super(BeautiUi, self).__init__() - self.setupUi(self) - - self.setWindowFlags(Qt.FramelessWindowHint) - self.set_control_button(self.min_button, self.max_button, self.close_button) - - self.tab_listwidget.setFrameShape(QtWidgets.QFrame.NoFrame) - # self.tab_listwidget.setSpacing(50) - self.video_listwidget.setFrameShape(QtWidgets.QFrame.NoFrame) - - self._set_style() - - set_full_icon(self.publish_box, 'switch_on.png') - - def _set_style(self): - for wi, bg in background_imgs.items(): - set_background_img(getattr(self, wi), bg) - - for wi, ic in button_icons.items(): - set_full_icon(getattr(self, wi), ic) - - for wi, cl in background_colors.items(): - set_background_color(getattr(self, wi), cl) - - for wi, tx in plain_text.items(): - set_plain_text(getattr(self, wi), tx) - - for label in get_qclass_child_widgets(self.stackedWidgetPage1, QtWidgets.QLineEdit): - pass - - -class MainUi(QtWidgets.QMainWindow, BeautiUi, UiFunc): - def __init__(self): - super(MainUi, self).__init__() - self._set_tab_listwidget_items([['1_normal.png', '1_selected.png'], ['2_normal.png', '2_selected.png'], ['3_normal.png', '3_selected.png']]) - self.tab_listwidget.setIconSize(QSize(100, 100)) - self._init_widget() - self._init_connect() - self._init_propety() - self._init_default() - - def _init_widget(self): - self._add_custome_item(self.video_listwidget, VideoItem, '', '/path/1.mp4', 'WAITING', 'Shanghai Dragons', 'Dallas Fuel', 'replay.png') - self._add_custome_item(self.video_listwidget, VideoItem, '', '/path/1.mp4', 'RUNNING', 'Shanghai Dragons', 'Dallas Fuel', 'replay.png') - - def _init_connect(self): - self.tab_listwidget.itemClicked.connect(self._tab_listwidget_item_clicked) - self.video_listwidget.customContextMenuRequested.connect(self._video_list_context_menu) - - self.team_left_lineedit.editingFinished.connect(lambda: self._team_name_edit_finished('left')) - self.team_right_lineedit.editingFinished.connect(lambda: self._team_name_edit_finished('right')) - - self.save_button.clicked.connect(self.save_button_clicked) - self.analyze_button.clicked.connect(self.analyze_button_clicked) - self.analyze_button.clicked.connect(self.select_video) # TODO: need connect to add video button - - def _init_propety(self): - - # set player's text to property like self.player_left0_text - for widget in get_qclass_child_widgets(self.team_setting_group, QtWidgets.QLineEdit): - name = widget.objectName - if name.startswith('player_'): - setattr(self, name.rstrip('lineedit') + 'text', widget.text()) - - def _init_default(self): - self.tab_listwidget.setCurrentRow(0) - self.main_stackedwidget.setCurrentIndex(0) - - def _set_tab_listwidget_items(self, pics): - for pic in pics: - item = QtWidgets.QListWidgetItem(QtGui.QIcon(SRC_PATH + '/tab_icons/' + pic[0]), '') - item.normal_icon = QtGui.QIcon(SRC_PATH + '/tab_icons/' + pic[0]) - item.selected_icon = QtGui.QIcon(SRC_PATH + '/tab_icons/' + pic[1]) - self.tab_listwidget.addItem(item) - - def _set_tab_listwidget_normal_icon(self): - for i in range(0, self.tab_listwidget.count()): - item = self.tab_listwidget.item(i) - item.setIcon(item.normal_icon) - - def _tab_listwidget_item_clicked(self, item): - self.main_stackedwidget.setCurrentIndex(self.tab_listwidget.currentRow()) - self._set_tab_listwidget_normal_icon() - item.setIcon(item.selected_icon) - - def _video_list_context_menu(self): - menu = QtWidgets.QMenu() - menu.addAction('删除', lambda _:remove_listwidget_item(self.video_listwidget)) - menu.exec_(QtGui.QCursor.pos()) - - def _team_name_edit_finished(self, team='left'): - current_video_item = self.current_video_item - setattr(current_video_item, 'set_team_%s_text' % team, getattr(self, 'input_team_%s_text' % team)) - - def select_video(self): - filename, _ = QtWidgets.QFileDialog.getOpenFileName(self, u'Select Video', filter="* (*.*)") - self._set_new_video(filename) - - def _set_new_video(self, path): - self._add_custome_item(self.video_listwidget, VideoItem, path, path, 'WAITING', 'Shanghai Dragons', - 'Dallas Fuel', 'replay.png') - - def save_button_clicked(self): - dirname = QtWidgets.QFileDialog.getExistingDirectory(self, u'Select Folder') - self.path_lineedit.setText(dirname) - - def analyze_button_clicked(self): - pass - - @property - def input_team_left_text(self): - return self.team_left_lineedit.text() - - @property - def input_team_right_text(self): - return self.team_right_lineedit.text() - - @property - def current_video_item(self): - item = self.video_listwidget.currentItem() - return self.video_listwidget.itemWidget(item) - - @property - def is_published(self): - return self.publish_box.isChecked() - - @property - def is_owl(self): - return True if self.type_owl_radiobutton.isChecked() else False - - @property - def start_time(self): - return self.start_time_lineedit.text() - - @property - def end_time(self): - return self.end_time_lineedit.text() - - -if __name__ == '__main__': - app = QtWidgets.QApplication(sys.argv) - with open('style.qss') as qss: - app.setStyleSheet(qss.read()) - w = MainUi() - w.show() - sys.exit(app.exec_()) \ No newline at end of file diff --git a/ora/gui/readme.md b/ora/gui/readme.md index ea19fa6..ad0dcd3 100644 --- a/ora/gui/readme.md +++ b/ora/gui/readme.md @@ -2,4 +2,4 @@ The Gui with PyQt5 is under development…… You can run demo with: -`Python gui_.py` \ No newline at end of file +`Python gui.py` \ No newline at end of file From 09f005580111321238cd4318151838413dc82cac Mon Sep 17 00:00:00 2001 From: chroming Date: Mon, 11 Mar 2019 22:50:42 +0800 Subject: [PATCH 43/57] fix video list select error --- ora/gui/gui.py | 2 +- ora/gui/mixin.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ora/gui/gui.py b/ora/gui/gui.py index 13331da..62b4e3b 100644 --- a/ora/gui/gui.py +++ b/ora/gui/gui.py @@ -133,7 +133,7 @@ def _tab_listwidget_item_clicked(self, item): def _video_list_context_menu(self): menu = QtWidgets.QMenu() - menu.addAction('删除', lambda _:remove_listwidget_item(self.video_listwidget)) + menu.addAction('删除', lambda: remove_listwidget_item(self.video_listwidget)) menu.exec_(QtGui.QCursor.pos()) def _team_name_edit_finished(self, team='left'): diff --git a/ora/gui/mixin.py b/ora/gui/mixin.py index 2810eab..bf6d86a 100644 --- a/ora/gui/mixin.py +++ b/ora/gui/mixin.py @@ -7,7 +7,7 @@ class MousePressChangeBackgroundMixin(QtWidgets.QWidget): - def __init__(self, normal_color="#143048'", selected_color="#111111"): + def __init__(self, normal_color="#143048", selected_color="#111111"): super(MousePressChangeBackgroundMixin, self).__init__() self.setMouseTracking(True) self.normal_color = normal_color From 19d3a77c47474e3931c9c620584f4a5c841839de Mon Sep 17 00:00:00 2001 From: chroming Date: Sun, 17 Mar 2019 22:47:56 +0800 Subject: [PATCH 44/57] fix line edit and checkbox text color --- ora/gui/style.qss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ora/gui/style.qss b/ora/gui/style.qss index 520b189..8628125 100644 --- a/ora/gui/style.qss +++ b/ora/gui/style.qss @@ -1,6 +1,10 @@ QLineEdit { background-color: rgb(23, 57, 86); border-radius: 3px; + color: rgb(201, 216, 229); +} +QCheckBox { + color: rgb(201, 216, 229); } QStackedWidget { background-color: rgb(13, 37, 59); From 34d28ba2f35789abd266b0cd3522d82f5ec25383 Mon Sep 17 00:00:00 2001 From: chroming Date: Fri, 5 Apr 2019 14:58:48 +0800 Subject: [PATCH 45/57] add click analyze button function --- ora/gui/gui.py | 27 ++++++++++++++++++++++++++- ora/gui/gui_api.py | 20 ++++++++++++++++++-- 2 files changed, 44 insertions(+), 3 deletions(-) diff --git a/ora/gui/gui.py b/ora/gui/gui.py index 62b4e3b..a03d751 100644 --- a/ora/gui/gui.py +++ b/ora/gui/gui.py @@ -3,6 +3,7 @@ from widget import * from style import * from functions import * +from gui_api import * QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling, True) windowui, QtBaseClass = uic.loadUiType('main.ui') @@ -153,7 +154,7 @@ def save_button_clicked(self): self.path_lineedit.setText(dirname) def analyze_button_clicked(self): - pass + return analyze_button_clicked(self.is_owl, ) @property def input_team_left_text(self): @@ -184,6 +185,30 @@ def start_time(self): def end_time(self): return self.end_time_lineedit.text() + @property + def video_path_text(self): + pass + + @property + def output_path_text(self): + pass + + @property + def game_info(self): + info = { + "name_team_left": self.input_team_left_text, + "name_team_right": self.input_team_right_text, + "name_players_team_left": [], + "name_players_team_right": [], + "video_path": "/", + "output_path": "/", + "start_time": self.start_time, + "end_time": self.end_time, + "fps": 0, + "game_type": 0, + "game_version": 1 + } + if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) diff --git a/ora/gui/gui_api.py b/ora/gui/gui_api.py index 06075ef..ef46a41 100644 --- a/ora/gui/gui_api.py +++ b/ora/gui/gui_api.py @@ -1,4 +1,8 @@ +from ora import game +from ora import pool +from ora import overwatch as OW + def get_video_info(video_path): """ @@ -15,12 +19,24 @@ def publish_analysis(): pass -def analyze_button_clicked(*args): +def analyze_button_clicked(is_owl, info): """ Run when click 'ANALYZE' button You should add args as need. """ - pass + is_owl = OW.GAMETYPE_OWL if is_owl else OW.GAMETYPE_CUSTOM + game_instance = game.Game(is_owl) + game_instance.set_game_info(info) + pool.initPool() + try: + game_instance.analyze(info['start_time'], info['end_time'], is_test=False) + except Exception as err: + print(err) + else: + game_instance.output() + + pool.PROCESS_POOL.close() + pool.PROCESS_POOL.join() def save_button_clicked(*args): From bef9bfbfd258e7fbd059b0fad0d28a9ac4db7d2a Mon Sep 17 00:00:00 2001 From: chroming Date: Sun, 14 Apr 2019 23:46:52 +0800 Subject: [PATCH 46/57] add run_qt_gui.py --- run_qt_gui.py | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 run_qt_gui.py diff --git a/run_qt_gui.py b/run_qt_gui.py new file mode 100644 index 0000000..cf634cf --- /dev/null +++ b/run_qt_gui.py @@ -0,0 +1,11 @@ +import sys +from PyQt5 import QtWidgets +from ora.gui.gui import MainUi + +if __name__ == '__main__': + app = QtWidgets.QApplication(sys.argv) + with open('./ora/gui/style.qss') as qss: + app.setStyleSheet(qss.read()) + w = MainUi() + w.show() + sys.exit(app.exec_()) \ No newline at end of file From 75a013959634bd3cb17571b341e444c38027277a Mon Sep 17 00:00:00 2001 From: chroming Date: Sun, 14 Apr 2019 23:48:26 +0800 Subject: [PATCH 47/57] update file path --- ora/gui/functions.py | 2 +- ora/gui/gui.py | 4 ++-- ora/gui/style.qss | 16 ++++++++-------- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/ora/gui/functions.py b/ora/gui/functions.py index d017ce1..6d0fa32 100644 --- a/ora/gui/functions.py +++ b/ora/gui/functions.py @@ -2,7 +2,7 @@ from PyQt5.Qt import QIcon, QSize -SRC_PATH = './images' +SRC_PATH = './ora/gui/images' def dynamic_base_class(instance, cls, cls_name): diff --git a/ora/gui/gui.py b/ora/gui/gui.py index a03d751..d74dab0 100644 --- a/ora/gui/gui.py +++ b/ora/gui/gui.py @@ -6,9 +6,9 @@ from gui_api import * QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling, True) -windowui, QtBaseClass = uic.loadUiType('main.ui') +windowui, QtBaseClass = uic.loadUiType('./ora/gui/main.ui') -SRC_PATH = './images' +SRC_PATH = './ora/gui/images' class UiFunc(object): diff --git a/ora/gui/style.qss b/ora/gui/style.qss index 8628125..8f8c937 100644 --- a/ora/gui/style.qss +++ b/ora/gui/style.qss @@ -20,16 +20,16 @@ QPushButton { border: None; } #publish_box::indicator:checked { - image: url(./images/widgets/switch_on_f.png); + image: url(./ora/gui/images/widgets/switch_on_f.png); } #publish_box::indicator:unchecked { - image: url(./images/widgets/switch_off_f.png); + image: url(./ora/gui/images/widgets/switch_off_f.png); } QRadioButton::indicator:unchecked{ - image: url(./images/widgets/radiobox_normal_f.png); + image: url(./ora/gui/images/widgets/radiobox_normal_f.png); } QRadioButton::indicator:checked{ - image: url(./images/widgets/radiobox_selected_f.png); + image: url(./ora/gui/images/widgets/radiobox_selected_f.png); } #analyze_button { border-style: solid; @@ -38,16 +38,16 @@ QRadioButton::indicator:checked{ color: rgb(37, 173, 231); } #save_button { - image: url(./images/widgets/button_save.png); + image: url(./ora/gui/images/widgets/button_save.png); } #save_button:hover { - image: url(./images/widgets/button_save_onhover.png); + image: url(./ora/gui/images/widgets/button_save_onhover.png); } #analyze_button { - image: url(./images/widgets/button_analyze.png); + image: url(./ora/gui/images/widgets/button_analyze.png); } #analyze_button:hover { - image: url(./images/widgets/button_analyze_onhover.png); + image: url(./ora/gui/images/widgets/button_analyze_onhover.png); } #tab_listwidget::item { min-height: 100px; From 067758048310316bf8521f30c244891df4035ad8 Mon Sep 17 00:00:00 2001 From: chroming Date: Sun, 14 Apr 2019 23:49:12 +0800 Subject: [PATCH 48/57] rename gui.py --- main.py | 2 +- ora/{gui.py => gui_.py} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename ora/{gui.py => gui_.py} (100%) diff --git a/main.py b/main.py index 7ce8fa3..1abcc34 100644 --- a/main.py +++ b/main.py @@ -1,4 +1,4 @@ -import ora.gui as Gui +import ora.gui_ as Gui import multiprocessing as mp def main(): diff --git a/ora/gui.py b/ora/gui_.py similarity index 100% rename from ora/gui.py rename to ora/gui_.py From 9b2e0f61543ba09d9d29cfab75299218e967b37a Mon Sep 17 00:00:00 2001 From: chroming Date: Mon, 15 Apr 2019 00:05:37 +0800 Subject: [PATCH 49/57] update analyze button click method --- ora/gui/gui.py | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/ora/gui/gui.py b/ora/gui/gui.py index d74dab0..bc1cd87 100644 --- a/ora/gui/gui.py +++ b/ora/gui/gui.py @@ -154,7 +154,7 @@ def save_button_clicked(self): self.path_lineedit.setText(dirname) def analyze_button_clicked(self): - return analyze_button_clicked(self.is_owl, ) + return analyze_button_clicked(self.is_owl, self.game_info) @property def input_team_left_text(self): @@ -164,6 +164,14 @@ def input_team_left_text(self): def input_team_right_text(self): return self.team_right_lineedit.text() + @property + def input_teams_left_players(self): + return [getattr(self, 'player_left%s_lineedit' % i) for i in range(0, 7)] + + @property + def input_teams_right_players(self): + return [getattr(self, 'player_right%s_lineedit' % i) for i in range(0, 7)] + @property def current_video_item(self): item = self.video_listwidget.currentItem() @@ -187,21 +195,21 @@ def end_time(self): @property def video_path_text(self): - pass + return self.path_lineedit.text() @property def output_path_text(self): - pass + return self.path_lineedit.text() @property def game_info(self): info = { "name_team_left": self.input_team_left_text, "name_team_right": self.input_team_right_text, - "name_players_team_left": [], - "name_players_team_right": [], - "video_path": "/", - "output_path": "/", + "name_players_team_left": self.input_teams_left_players, + "name_players_team_right": self.input_teams_right_players, + "video_path": self.video_path_text, + "output_path": self.output_path_text, "start_time": self.start_time, "end_time": self.end_time, "fps": 0, @@ -209,6 +217,7 @@ def game_info(self): "game_version": 1 } + return info if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) From f99de8b523b5f824ce09550e18ddd66d9173adc3 Mon Sep 17 00:00:00 2001 From: chroming Date: Mon, 10 Jun 2019 23:27:12 +0800 Subject: [PATCH 50/57] remove max button --- ora/gui/gui.py | 2 +- ora/gui/main.ui | 29 ++++------------------------- ora/gui/mixin.py | 6 +++--- ora/gui/style.py | 1 - 4 files changed, 8 insertions(+), 30 deletions(-) diff --git a/ora/gui/gui.py b/ora/gui/gui.py index bc1cd87..904c565 100644 --- a/ora/gui/gui.py +++ b/ora/gui/gui.py @@ -51,7 +51,7 @@ def __init__(self): self.setupUi(self) self.setWindowFlags(Qt.FramelessWindowHint) - self.set_control_button(self.min_button, self.max_button, self.close_button) + self.set_control_button(self.min_button, self.min_button, self.close_button) self.tab_listwidget.setFrameShape(QtWidgets.QFrame.NoFrame) # self.tab_listwidget.setSpacing(50) diff --git a/ora/gui/main.ui b/ora/gui/main.ui index b8e2152..9eae56c 100644 --- a/ora/gui/main.ui +++ b/ora/gui/main.ui @@ -816,8 +816,8 @@ - 714 - 2 + 770 + 4 65 85 @@ -846,8 +846,8 @@ - 778 - 2 + 842 + 4 65 83 @@ -864,27 +864,6 @@ true - - - - 842 - 2 - 71 - 85 - - - - - 20 - - - - - - - true - - diff --git a/ora/gui/mixin.py b/ora/gui/mixin.py index bf6d86a..cd67e2a 100644 --- a/ora/gui/mixin.py +++ b/ora/gui/mixin.py @@ -62,14 +62,14 @@ def __init__(self): super(ControlButtonMixin, self).__init__() def set_control_button(self, min_button, max_button, exit_button, max_icon='', resize_icon='', bg_color='#000000'): - self.max_button = max_button - self.max_icon = max_icon + # self.max_button = max_button + # self.max_icon = max_icon self.resize_icon = resize_icon # map(partial(set_background_color, color=bg_color), [min_button, max_button, exit_button]) min_button.clicked.connect(self.showMinimized) - max_button.clicked.connect(self._max_button_clicked) + # max_button.clicked.connect(self._max_button_clicked) exit_button.clicked.connect(self.close) def _max_button_clicked(self): diff --git a/ora/gui/style.py b/ora/gui/style.py index fabd5d7..9f00ed6 100644 --- a/ora/gui/style.py +++ b/ora/gui/style.py @@ -21,7 +21,6 @@ 'back_button': 'design_03', 'help_button': 'design_05', 'min_button': 'design_07', - 'max_button': 'design_08', 'close_button': 'design_09' } From 948db7cb25e5da2ae1c5a3df2d49715a7613dcc5 Mon Sep 17 00:00:00 2001 From: chroming Date: Tue, 11 Jun 2019 00:34:20 +0800 Subject: [PATCH 51/57] update ui --- ora/gui/main.ui | 70 +++++++++++++++++++++++--------------------- ora/gui/preview.png | Bin 235069 -> 110597 bytes ora/gui/style.py | 5 ++-- 3 files changed, 40 insertions(+), 35 deletions(-) diff --git a/ora/gui/main.ui b/ora/gui/main.ui index 9eae56c..2994cae 100644 --- a/ora/gui/main.ui +++ b/ora/gui/main.ui @@ -7,7 +7,7 @@ 0 0 1085 - 789 + 790 @@ -17,8 +17,8 @@ - 118 - 90 + 120 + 95 973 701 @@ -41,7 +41,7 @@ 0 0 - 699 + 700 645 @@ -480,7 +480,10 @@ + Segoe UI 20 + 50 + false @@ -546,6 +549,7 @@ + Segoe UI 20 @@ -573,7 +577,7 @@ - 4 + 0 644 697 49 @@ -780,10 +784,10 @@ - 104 - -2 - 989 - 97 + 120 + 0 + 976 + 95 @@ -795,10 +799,10 @@ - 2 + 0 0 - 83 - 89 + 65 + 80 @@ -816,10 +820,10 @@ - 770 - 4 + 795 + 0 65 - 85 + 80 @@ -846,10 +850,10 @@ - 842 - 4 + 860 + 0 65 - 83 + 80 @@ -867,10 +871,10 @@ - 912 - 4 + 925 + 0 65 - 81 + 80 @@ -889,10 +893,10 @@ - -1 - -2 - 123 - 791 + 0 + 0 + 120 + 795 @@ -904,10 +908,10 @@ - 2 - 4 - 113 - 83 + 0 + 0 + 120 + 95 @@ -926,10 +930,10 @@ - 4 - 90 - 117 - 669 + 0 + 95 + 120 + 670 diff --git a/ora/gui/preview.png b/ora/gui/preview.png index f5b9a9660b3498a488db2e8c756d3afa66fa06f6..f96f90a658b4b7cdfa66da6f7afede606d7a0887 100644 GIT binary patch literal 110597 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�K&snL2g*W4iQHJC$)wI4VgtB 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

3POk{-R^hvpId^@%*{J)q^)g|>VT-PnRS?_0 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ℑ+_5Y8|nwc;tbJs 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 diff --git a/ora/gui/style.py b/ora/gui/style.py index 9f00ed6..daea927 100644 --- a/ora/gui/style.py +++ b/ora/gui/style.py @@ -3,7 +3,7 @@ background_imgs = { 'left_group': 'left_bg.png', - 'top_group': 'top_bg.png', + #'top_group': 'top_bg.png', #'analyze_group': 'analyze_bg.png', 'video_title_group': 'column_title_bg.png', 'team_title_group': 'column_title_bg.png', @@ -14,7 +14,8 @@ } background_colors = { - 'video_listwidget': '#143048' + 'video_listwidget': '#143048', + 'top_group': '#143048' } button_icons = { From f35b34412eef2ea7293c23646ae53827a92ea7ae Mon Sep 17 00:00:00 2001 From: chroming Date: Tue, 11 Jun 2019 23:37:44 +0800 Subject: [PATCH 52/57] add margins --- ora/gui/main.ui | 15 ++++++++++++--- ora/gui/style.qss | 26 ++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/ora/gui/main.ui b/ora/gui/main.ui index 2994cae..2eeadc2 100644 --- a/ora/gui/main.ui +++ b/ora/gui/main.ui @@ -26,6 +26,9 @@ + + main_stackedwidget + Qt::LeftToRight @@ -36,6 +39,9 @@ 0 + + stackedWidgetPage1 + @@ -564,7 +570,7 @@ 700 200 271 - 483 + 502 @@ -578,8 +584,8 @@ 0 - 644 - 697 + 645 + 700 49 @@ -861,6 +867,9 @@ 20 + + min_button + diff --git a/ora/gui/style.qss b/ora/gui/style.qss index 8f8c937..e0b48bd 100644 --- a/ora/gui/style.qss +++ b/ora/gui/style.qss @@ -1,3 +1,10 @@ +QMainWindow { + background-color: rgb(34, 78, 116); +} +QStackedWidget { + background-color: rgb(34, 78, 116); +} + QLineEdit { background-color: rgb(23, 57, 86); border-radius: 3px; @@ -15,6 +22,7 @@ QLabel { } QGroupBox { border: None; + } QPushButton { border: None; @@ -51,4 +59,22 @@ QRadioButton::indicator:checked{ } #tab_listwidget::item { min-height: 100px; +} +#top_group { + margin-bottom: 2px; + background-color: rgb(34, 78, 116); +} +#min_button { + margin-left: 2px; +} +#video_listwidget { + margin-right: 2px; + margin-bottom: 2px; +} +#stackedWidgetPage1 { + background-color: rgb(34, 78, 116); +} +#analyze_group { + background-color: rgb(340, 78, 116); + margin-right: 2px; } \ No newline at end of file From d7a8a9a18b2db147ebc90b2373f1f3bad70206a8 Mon Sep 17 00:00:00 2001 From: chroming Date: Tue, 11 Jun 2019 23:44:06 +0800 Subject: [PATCH 53/57] update ui --- ora/gui/main.ui | 12 ++++++------ ora/gui/mixin.py | 3 +-- ora/gui/preview.png | Bin 110597 -> 109296 bytes ora/gui/style.qss | 2 +- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/ora/gui/main.ui b/ora/gui/main.ui index 2eeadc2..e610754 100644 --- a/ora/gui/main.ui +++ b/ora/gui/main.ui @@ -493,7 +493,7 @@ - VIDEO SETTING + VIDEO SETTING @@ -560,7 +560,7 @@ - TEAM SETTING + TEAM SETTING @@ -586,7 +586,7 @@ 0 645 700 - 49 + 50 @@ -599,7 +599,7 @@ 610 - 14 + 12 80 28 @@ -615,7 +615,7 @@ 564 - 12 + 10 39 31 @@ -640,7 +640,7 @@ 10 - 12 + 10 555 31 diff --git a/ora/gui/mixin.py b/ora/gui/mixin.py index cd67e2a..86e9370 100644 --- a/ora/gui/mixin.py +++ b/ora/gui/mixin.py @@ -7,7 +7,7 @@ class MousePressChangeBackgroundMixin(QtWidgets.QWidget): - def __init__(self, normal_color="#143048", selected_color="#111111"): + def __init__(self, normal_color="#143048", selected_color="#11293f"): super(MousePressChangeBackgroundMixin, self).__init__() self.setMouseTracking(True) self.normal_color = normal_color @@ -67,7 +67,6 @@ def set_control_button(self, min_button, max_button, exit_button, max_icon='', r self.resize_icon = resize_icon # map(partial(set_background_color, color=bg_color), [min_button, max_button, exit_button]) - min_button.clicked.connect(self.showMinimized) # max_button.clicked.connect(self._max_button_clicked) exit_button.clicked.connect(self.close) diff --git a/ora/gui/preview.png b/ora/gui/preview.png index f96f90a658b4b7cdfa66da6f7afede606d7a0887..0c0eeed58fc7f0cba5c5695339624f4706b6de3b 100644 GIT binary patch literal 109296 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 Date: Mon, 7 Oct 2019 17:47:51 +0800 Subject: [PATCH 54/57] update .gitignore --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index ddff75d..36d9063 100644 --- a/.gitignore +++ b/.gitignore @@ -13,4 +13,5 @@ *.pyc *.orig __pycache__/ - +env/ +venv/ \ No newline at end of file From 3b4abb425c55c1ee744e554fc682e00655c387fb Mon Sep 17 00:00:00 2001 From: chroming Date: Mon, 7 Oct 2019 18:16:45 +0800 Subject: [PATCH 55/57] update requests --- requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements.txt b/requirements.txt index 080c3ab..3e41708 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ scikit-image opencv-python openpyxl +requests \ No newline at end of file From f0387c5506ebfa8ea39cdc0e876eee8e647c941b Mon Sep 17 00:00:00 2001 From: chroming Date: Mon, 7 Oct 2019 18:43:50 +0800 Subject: [PATCH 56/57] catch qt error --- run_qt_gui.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/run_qt_gui.py b/run_qt_gui.py index cf634cf..2213aff 100644 --- a/run_qt_gui.py +++ b/run_qt_gui.py @@ -2,6 +2,12 @@ from PyQt5 import QtWidgets from ora.gui.gui import MainUi +sys._excepthook = sys.excepthook +def exception_hook(exctype, value, traceback): + sys._excepthook(exctype, value, traceback) + sys.exit(1) +sys.excepthook = exception_hook + if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) with open('./ora/gui/style.qss') as qss: From 34e63df25530f8fe36fcc126fde39fb1f7cdeff0 Mon Sep 17 00:00:00 2001 From: chroming Date: Mon, 7 Oct 2019 18:46:35 +0800 Subject: [PATCH 57/57] Add "Add video" to right click menu --- ora/gui/functions.py | 4 ++++ ora/gui/gui.py | 10 +++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/ora/gui/functions.py b/ora/gui/functions.py index 6d0fa32..ec3ac32 100644 --- a/ora/gui/functions.py +++ b/ora/gui/functions.py @@ -1,6 +1,7 @@ from os.path import join from PyQt5.Qt import QIcon, QSize +from PyQt5.QtWidgets import QFileDialog SRC_PATH = './ora/gui/images' @@ -35,6 +36,9 @@ def set_full_icon(widget, file_name, path='icons'): def remove_listwidget_item(listwidget): listwidget.takeItem(listwidget.currentRow()) +def open_file_dialog(parent): + filename, _ = QFileDialog.getOpenFileName(parent, u'select video') + return filename def set_qclass_child_widgets_style(widget, qclass, style): for c in get_qclass_child_widgets(widget, qclass): diff --git a/ora/gui/gui.py b/ora/gui/gui.py index 904c565..3da0f21 100644 --- a/ora/gui/gui.py +++ b/ora/gui/gui.py @@ -134,9 +134,17 @@ def _tab_listwidget_item_clicked(self, item): def _video_list_context_menu(self): menu = QtWidgets.QMenu() - menu.addAction('删除', lambda: remove_listwidget_item(self.video_listwidget)) + menu.addAction('Delete', lambda: remove_listwidget_item(self.video_listwidget)) + menu.addAction('Add', self._select_and_add_video) menu.exec_(QtGui.QCursor.pos()) + def _select_and_add_video(self): + filename = open_file_dialog(self) + return self._add_video(filename) + + def _add_video(self, filename): + print(filename) + def _team_name_edit_finished(self, team='left'): current_video_item = self.current_video_item setattr(current_video_item, 'set_team_%s_text' % team, getattr(self, 'input_team_%s_text' % team))