From d6753dc986cc51be1571dd457b584e0218edee5c Mon Sep 17 00:00:00 2001 From: Theophile Terraz Date: Fri, 1 Dec 2023 18:37:36 +0100 Subject: [PATCH] upgrade results slider --- src/View/Results/Window.py | 40 ++++++- src/View/ui/Results.ui | 108 ++++++++++++++---- .../ui/ressources/media-playback-pause.png | Bin 0 -> 217 bytes .../ui/ressources/media-playback-start.png | Bin 0 -> 472 bytes .../ui/ressources/media-seek-backward.png | Bin 0 -> 539 bytes src/View/ui/ressources/media-seek-forward.png | Bin 0 -> 610 bytes .../ui/ressources/media-skip-backward.png | Bin 0 -> 557 bytes src/View/ui/ressources/media-skip-forward.png | Bin 0 -> 558 bytes 8 files changed, 122 insertions(+), 26 deletions(-) create mode 100644 src/View/ui/ressources/media-playback-pause.png create mode 100644 src/View/ui/ressources/media-playback-start.png create mode 100644 src/View/ui/ressources/media-seek-backward.png create mode 100644 src/View/ui/ressources/media-seek-forward.png create mode 100644 src/View/ui/ressources/media-skip-backward.png create mode 100644 src/View/ui/ressources/media-skip-forward.png diff --git a/src/View/Results/Window.py b/src/View/Results/Window.py index d2f587af..a5114ba9 100644 --- a/src/View/Results/Window.py +++ b/src/View/Results/Window.py @@ -24,13 +24,13 @@ from tools import trace, timer from View.Tools.PamhyrWindow import PamhyrWindow from PyQt5.QtGui import ( - QKeySequence, + QKeySequence, QIcon, QPixmap, ) from PyQt5.QtCore import ( Qt, QVariant, QAbstractTableModel, QCoreApplication, QModelIndex, pyqtSlot, - QItemSelectionModel, + QItemSelectionModel, QTimer, ) from PyQt5.QtWidgets import ( @@ -124,6 +124,16 @@ class ResultsWindow(PamhyrWindow): self._slider_time.setMaximum(len(self._timestamps) - 1) self._slider_time.setValue(len(self._timestamps) - 1) + self._icon_start = QIcon() + self._icon_start.addPixmap(QPixmap('./src/View/ui/ressources/media-playback-start.png')) + self._icon_pause = QIcon() + self._icon_pause.addPixmap(QPixmap('./src/View/ui/ressources/media-playback-pause.png')) + self._button_play = self.find(QPushButton, f"playButton") + self._button_play.setIcon(self._icon_start) + self._button_back = self.find(QPushButton, f"backButton") + self._button_next = self.find(QPushButton, f"nextButton") + self._timer = QTimer(self) + def setup_plot(self): self.canvas = MplCanvas(width=5, height=4, dpi=100) self.canvas.setObjectName("canvas") @@ -310,6 +320,11 @@ class ResultsWindow(PamhyrWindow): self._slider_profile.valueChanged.connect( self._set_current_profile_slider) self._slider_time.valueChanged.connect(self._set_current_timestamp) + self._button_play.setChecked(False) + self._button_play.clicked.connect(self._pause) + self._button_back.clicked.connect(self._back) + self._button_next.clicked.connect(self._next) + self._timer.timeout.connect(self._update_slider) def update_table_selection_reach(self, ind): table = self.find(QTableView, f"tableView_reach") @@ -525,3 +540,24 @@ class ResultsWindow(PamhyrWindow): def _redo(self): self._table.redo() + + # play / pause buttons + def _update_slider(self): + if self._slider_time.value() == self._slider_time.maximum(): + self._slider_time.setValue(self._slider_time.minimum()) + else: + self._slider_time.setValue(self._slider_time.value()+1) + + def _next(self): + self._slider_time.setValue(self._slider_time.value()+1) + + def _back(self): + self._slider_time.setValue(self._slider_time.value()-1) + + def _pause(self): + if self._button_play.isChecked(): + self._timer.start(100) + self._button_play.setIcon(self._icon_pause) + else: + self._timer.stop() + self._button_play.setIcon(self._icon_start) diff --git a/src/View/ui/Results.ui b/src/View/ui/Results.ui index bb8aaae6..54666dd9 100644 --- a/src/View/ui/Results.ui +++ b/src/View/ui/Results.ui @@ -7,7 +7,7 @@ 0 0 942 - 655 + 740 @@ -43,25 +43,29 @@ - - - Qt::Vertical - - - - Qt::Horizontal - - - + + + + + Qt::Vertical + + + + Qt::Horizontal + + + + + + + + + + + - - - - - - - - + + @@ -117,11 +121,67 @@ - - - Qt::Horizontal - - + + + + + + + + + ressources/media-seek-backward.pngressources/media-seek-backward.png + + + + + + + true + + + true + + + Qt::DefaultContextMenu + + + true + + + + + + + ressources/media-playback-start.png + ressources/media-playback-pause.pngressources/media-playback-start.png + + + true + + + true + + + + + + + + + + + ressources/media-seek-forward.pngressources/media-seek-forward.png + + + + + + + Qt::Horizontal + + + + diff --git a/src/View/ui/ressources/media-playback-pause.png b/src/View/ui/ressources/media-playback-pause.png new file mode 100644 index 0000000000000000000000000000000000000000..d1d8541d0f946f20c9c3db61f920626a4ef32942 GIT binary patch literal 217 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sS^+*Gu0Z-fHUJc_udkm!fBydc z`_G?04^*Pit^yQf;3x_53ua*Jo;vN#+xJld=R|;FVV*9IAr-gYUfIfcz<|dk(D>Ci zdGj-K^cGx~sMr2z?<3Ve@A~HEJ3Jy~E6*NCntqpu;mHl9kQLTXvi6G~x!|>8$vXkd r2Mx{J*}k_m9M-F@pKw=x>YIEo)eQM_C(o{#46@eK)z4*}Q$iB}6^dac literal 0 HcmV?d00001 diff --git a/src/View/ui/ressources/media-playback-start.png b/src/View/ui/ressources/media-playback-start.png new file mode 100644 index 0000000000000000000000000000000000000000..4b696d8e87e1a57c73ce54552c7d002fd3e7be25 GIT binary patch literal 472 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sD*}8%T!Hj|8~`ZA$jHdT!otSJ z#?H>p$;rvZ#l^$JBPuE?CMG5=EiEG>qobpvr>AFPVq$7)>fzzx~)z3S@3oG8Nlpi27A(zreAjCcM&S-@fasUY*(``@ufr)$bK zwQ@zCOn>`JN&e9+nUeyV6CcOre{$$*Q@F_#)~A29lR3{bSK|>w!e&$PLWT|Hld`n< z82a?Cbh73xHxdAf+?>;C!EocP%B(KthQr02+;{wzp1=JhhaqRHc*;ozuem84IV$tH z9yxRQRc$ro(#`&=wWaX)aw{LU8}D?k{CStGxz6g?5liL!rplc0)5Ef>FVdQ&MBb@03#^edjJ3c literal 0 HcmV?d00001 diff --git a/src/View/ui/ressources/media-seek-backward.png b/src/View/ui/ressources/media-seek-backward.png new file mode 100644 index 0000000000000000000000000000000000000000..05bff6fcea23f8d0cb2a54334d73c61d62e3ef69 GIT binary patch literal 539 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sTLOGST!Hj|8~`ZA$jHdV#KgkF z!p_dl!NDOYC@3T(Bqb#!FE6jCsAyFauln)M+cL1ee!Hjp6_@Ss7oCz*eS*>Jc%PTzmu1!mS+s6`tl#Xndu{*3 zZ_^!j@BN~hZCo$ZYj;!b!{W+?Qv(@JJX>3-$H*aE*S=keC*jZe4{j_C_75IKwlHks zY&gIBmcaoth6HDZUy02JjxoHLZ||iOD9yz8pH<=HEYCeBCaphpXvrD-mdKI;Vst0AsoRVE_OC literal 0 HcmV?d00001 diff --git a/src/View/ui/ressources/media-seek-forward.png b/src/View/ui/ressources/media-seek-forward.png new file mode 100644 index 0000000000000000000000000000000000000000..9610f752cb36830d941f4e88c84f497c9fb780d6 GIT binary patch literal 610 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-s4+DHcT!Hj|8~`ZA$jHdV#Kg?Z z%*MvX&d$!s$;rjV#m&vl&(AL`EG!}-A}T5>BO{}vq@<#vqNAgur>AFXYHDF&;o{=r zecJluiw0R^Y-oAckkYP`SRua_wPS`{P_L*_us#N|NZ+1^x1Dqc@v;dI7@>3 zf*IJlr%qe>=I#4*&XQc9@6={m=fYtj+gX z9b3AHoyqQ>ddsD6$(6MvYbFI<{4hm8NYU+N`(ue94*^FzC&rJS&5I9vEw$wm$$PXk zXk{$Bpvb9N%XVJP&z!XXy{X#w6f=I|Y_6f{}>i}i01OWvo>e}avcFSYp{555=Y zcKYTR=)rYJw5Rp-ok!Ph|=e`d%sdZPpbEvhKE{boOJKAElLyS oM5U>0a#8GVpRPCc_NhMm&oNznJHAES1coDnr>mdKI;Vst0PjU5>Hq)$ literal 0 HcmV?d00001 diff --git a/src/View/ui/ressources/media-skip-backward.png b/src/View/ui/ressources/media-skip-backward.png new file mode 100644 index 0000000000000000000000000000000000000000..8f9480c7ca09f5a4e9e0bea01caa6181c6b5c91f GIT binary patch literal 557 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sdjotzT!Hj|8~`ZA$jHdT!otSJ z#?H>p!^6YR&o3Y#ASfs(D=RB6FR!n!Z)j*}WMpJ!X6EYZ>fzzx>FF6B9v&MTn~;!@ zl9G~|nwp!NTV7sXS65eGU*FNu(b?HKVZwyjvu7_^vSjJfrK?u0+O%oY)~#E2?%cV5 z|Ng^=4<9>r?ELxjH*Vaxb?ess`}beGc=77hs}CPOeE$6T%a<=-zkdDw`}dzefByaZ z2Xu94lZZUfm7FC(e!&cE-BYKneDn5wI%i2P(B)#DE{-7;x86>9?#FB>(Bj!JVPQGP zUyI@rjuyEOzwO1grOv3>y79^VlOEU8zW#i6>fM%Tdkq7Fooz{FHcJma2 z-}&E68{)ru@g=OYZ`c{qu=7W?@$_pBXO6NZ>8*90shxT8AR}WfheWY@+ksZYdyyJ4 k#z&ji)P(q%D*j^q`*4=lD(CRUz+hwWboFyt=akR{0J|{p%gZYuARs6xC@U)~FE6jJuWw{zWM*dO>gwv|=H}ty;pyoa92^`H5)vC58y6Rs zkdTm&~4!_wV0-`0(K) zM~)mjcI^1^cfW*U%q_#`t|GY-@pI-`Sb7J zKcK6vwDR?VuH-BU@(X5Q>z+Do<(s$f(>Y6Wfi4&Kba4!+xb=3*(>!NGp4QWAk82zE z&8)2ae|*+vxs}sQt53bJ-v7zdUOVQ*Nv@+_$_BkfANR9FYSvAxHxLTYx?*O(>UEh) zKuD1Ghuby#cKo@w<@5B-KmR=8b-i}-v(cgWNBl{*${D?Umd$x1U*GwpOUY@$+K<{^ zP6}Cf7o3P^DsGr0P}jYOWdX~DeXhnWH`e>RJM33zxVBY&L41(IejdiZlbC)z<=A3d zJ%81T;(U&T1+2HMOIf8Rraj_5?4r2Qdu8)G`&XH^Hs#kAp6nGkaPE`sj6?4}DQhhJ z{UE28@jF}7i(b_Q<~QywGH+|RcY^s!bphXn2cGhQ?|MsJ!dEMoa>lF)d!`z2{d$i_ mfTP;hFWovnSDoRov=7}r^T^%4&3?deWAJqKb6Mw<&;$TSKMz9y literal 0 HcmV?d00001