From 02503842807311320ec00fc65e98706c6d225352 Mon Sep 17 00:00:00 2001 From: Micah Lee Date: Sun, 13 Feb 2022 15:33:13 -0800 Subject: [PATCH] Add rocket ship animation --- desktop/onionshare/connection_tab.py | 110 +++++++++++++++++- desktop/onionshare/main_window.py | 8 +- .../resources/images/tor-connect-ship.png | Bin 0 -> 22600 bytes .../resources/images/tor-connect-smoke.png | Bin 0 -> 31638 bytes .../resources/images/tor-connect-stars.png | Bin 0 -> 14135 bytes desktop/onionshare/tab_widget.py | 5 +- desktop/onionshare/tor_connection.py | 4 + 7 files changed, 120 insertions(+), 7 deletions(-) create mode 100644 desktop/onionshare/resources/images/tor-connect-ship.png create mode 100644 desktop/onionshare/resources/images/tor-connect-smoke.png create mode 100644 desktop/onionshare/resources/images/tor-connect-stars.png diff --git a/desktop/onionshare/connection_tab.py b/desktop/onionshare/connection_tab.py index e67ca483..fc78ba15 100644 --- a/desktop/onionshare/connection_tab.py +++ b/desktop/onionshare/connection_tab.py @@ -20,8 +20,6 @@ along with this program. If not, see . import json import os -import random -import time from PySide2 import QtCore, QtWidgets, QtGui from onionshare_cli.censorship import ( @@ -51,13 +49,14 @@ class AutoConnectTab(QtWidgets.QWidget): tor_is_connected = QtCore.Signal() tor_is_disconnected = QtCore.Signal() - def __init__(self, common, tab_id, status_bar, parent=None): + def __init__(self, common, tab_id, status_bar, window, parent=None): super(AutoConnectTab, self).__init__() self.common = common self.common.log("AutoConnectTab", "__init__") self.status_bar = status_bar self.tab_id = tab_id + self.window = window self.parent = parent # Was auto connected? @@ -65,6 +64,11 @@ class AutoConnectTab(QtWidgets.QWidget): self.curr_settings.load() self.auto_connect_enabled = self.curr_settings.get("auto_connect") + # Rocket ship animation images + self.anim_stars = AnimStars(self, self.window) + self.anim_ship = AnimShip(self, self.window) + self.anim_smoke = AnimSmoke(self, self.window) + # Onionshare logo self.image_label = QtWidgets.QLabel() self.image_label.setPixmap( @@ -108,6 +112,9 @@ class AutoConnectTab(QtWidgets.QWidget): self.tor_con = TorConnectionWidget(self.common, self.status_bar) self.tor_con.success.connect(self.tor_con_success) self.tor_con.fail.connect(self.tor_con_fail) + self.tor_con.update_progress.connect(self.anim_stars.update) + self.tor_con.update_progress.connect(self.anim_ship.update) + self.tor_con.update_progress.connect(self.anim_smoke.update) self.tor_con.hide() # Layout @@ -328,6 +335,102 @@ class AutoConnectTab(QtWidgets.QWidget): self.first_launch_widget.show() +class Anim(QtWidgets.QLabel): + """ + Rocket ship animation base class + """ + + force_update = QtCore.Signal(int) + + def __init__(self, parent, window, w, h, filename): + super(Anim, self).__init__(parent=parent) + + self.window = window + self.window.window_resized.connect(self.update_same_percent) + + self.w = w + self.h = h + self.percent = 0 + self.used_percentages = [] + + self.setPixmap( + QtGui.QPixmap.fromImage( + QtGui.QImage( + GuiCommon.get_resource_path(os.path.join("images", filename)) + ) + ) + ) + self.setFixedSize(self.w, self.h) + self.update(0) + + self.force_update.connect(self.update) + + def update_same_percent(self): + self.update(self.percent) + + def update(self, percent): + self.percent = percent + self.move() + self.setGeometry(int(self.x), int(self.y), int(self.w), int(self.h)) + + def move(self): + # Implement in child + pass + + +class AnimStars(Anim): + """ + Rocket ship animation part: stars + """ + + def __init__(self, parent, window): + super(AnimStars, self).__init__( + parent, window, 780, 629, "tor-connect-stars.png" + ) + + def move(self): + self.x = self.window.width() - self.w + self.y = 0 + + # Stars don't move until 10%, then move down + if self.percent >= 10: + self.y += self.percent * 6.6 + + +class AnimShip(Anim): + """ + Rocket ship animation part: ship + """ + + def __init__(self, parent, window): + super(AnimShip, self).__init__(parent, window, 239, 545, "tor-connect-ship.png") + + def move(self): + self.x = self.window.width() - self.w - 150 + self.y = self.window.height() - self.h - 40 + # Ship moves up + self.y -= self.percent * 6.6 + + +class AnimSmoke(Anim): + """ + Rocket ship animation part: smoke + """ + + def __init__(self, parent, window): + super(AnimSmoke, self).__init__( + parent, window, 522, 158, "tor-connect-smoke.png" + ) + + def move(self): + self.x = self.window.width() - self.w + self.y = self.window.height() - self.h + 50 + # Smoke moves up until 50%, then moves down + self.y -= self.percent * 6.6 + if self.percent >= 50: + self.y += self.percent * 6.6 + + class AutoConnectFirstLaunchWidget(QtWidgets.QWidget): """ When you first launch OnionShare, this is the widget that is displayed @@ -346,7 +449,6 @@ class AutoConnectFirstLaunchWidget(QtWidgets.QWidget): # Description and checkbox description_label = QtWidgets.QLabel(strings._("gui_autoconnect_description")) - description_label.setWordWrap(True) self.enable_autoconnect_checkbox = ToggleCheckbox( strings._("gui_enable_autoconnect_checkbox") ) diff --git a/desktop/onionshare/main_window.py b/desktop/onionshare/main_window.py index 9c6f455f..a7dfe761 100644 --- a/desktop/onionshare/main_window.py +++ b/desktop/onionshare/main_window.py @@ -36,6 +36,8 @@ class MainWindow(QtWidgets.QMainWindow): MainWindow is the OnionShare main window, which contains the GUI elements, including all open tabs """ + window_resized = QtCore.Signal() + def __init__(self, common, filenames): super(MainWindow, self).__init__() @@ -140,7 +142,7 @@ class MainWindow(QtWidgets.QMainWindow): self.status_bar.addPermanentWidget(self.settings_button) # Tabs - self.tabs = TabWidget(self.common, self.system_tray, self.status_bar) + self.tabs = TabWidget(self.common, self.system_tray, self.status_bar, self) self.tabs.bring_to_front.connect(self.bring_to_front) # If we have saved persistent tabs, try opening those @@ -335,3 +337,7 @@ class MainWindow(QtWidgets.QMainWindow): # Wait 1 second for threads to close gracefully, so tests finally pass time.sleep(1) + + def resizeEvent(self, event): + self.window_resized.emit() + return super(MainWindow, self).resizeEvent(event) \ No newline at end of file diff --git a/desktop/onionshare/resources/images/tor-connect-ship.png b/desktop/onionshare/resources/images/tor-connect-ship.png new file mode 100644 index 0000000000000000000000000000000000000000..5b8ede8b324635f9b8aa61106245b43fc4cfb8d2 GIT binary patch literal 22600 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 P00000NkvXXu0mjfo^D4F literal 0 HcmV?d00001 diff --git a/desktop/onionshare/resources/images/tor-connect-smoke.png b/desktop/onionshare/resources/images/tor-connect-smoke.png new file mode 100644 index 0000000000000000000000000000000000000000..c0cab360d43117f93ec9bb7d091c6505409228a7 GIT binary patch literal 31638 zcmX6^by(A17aujcYcxm*(g;Y5mXHpmyAdhr+>lZlr9@Inq@{C&G)RL=jz*+L!+`he z@7?n-*!~#1_nv#s`NVmrtF1~*Ku-Vyfry`}J=F(+F#r9Xiw6dt4ay$y0Kf1()l9rW zAVSK2KNz5_YzXishPS?|BB<&I<1X+5+etx70R*Z|B1GHZfIz{#&z>qg55U;(z)!a5 zOW_XsO3S~LV5$hOO*W;lJyAnh2flh0iG|$8hkb`yzZHU1+d`5fYmNJ@P$(FD4fp3D zrK5b0c-CZ>&`(Up^PfQ&ca-DU58@$@6EWgBUiD`xi+qyTC@d!C_w5)h|6mk&;%GR# ztNdrv{^^BGsrCy)!xxT*hI3orD8QTnhfAo<5hkd3w^eVm*ZN{O7B2ny!BU(Ju_{Zb zPou|*Y?Jr)k5_+x)-tcOwYEY_+?<_vx>v?NJz>cdccYiRSoG{A#?AJYP$Q0Fd) z#9aMGktngDqQDLnZ)j{3??esrj;#+Qc|gQoJ}(Yk4!haUT~Cz$al5Mndwtk>Q?-q> z>yIyMWDB`KGsVa8C8;V<7Z%jj)wOkWbhL>w|NBe|^|uNx+>C6^z-N8x=6064yIlX& z#XAuh-PP!}@Rdo%?;4_#1Et4x<}kh#lJ&WB_7SyipDa|p@m~%seM3kL78RMO>GJQ1 zlUVruyOr(WZr(C@e~H1P-3w-@h|ig-tB6meu7niAq{schrS&peJ6Mz+dl8GZ17lGr zS*0gi()+iL^nN`L+4AJ#B9vL`dPrz#A_aE7%9*L|)$RH74MIjnCg*7S9YV;Vmin#{ zdXGLa%L_q0BO0Hm0qH0;!tU?OCa=>JCp(bJ_TxFvFC9nBJR{hP=nozdqkRvp=&tzhoZ7jcX_s z%Mkq+0HI+2CExjkmb>e{?QWk#D={\^^_{HB5Jpc^_Ni1-`iQG}T59Q5^i!jsR- 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 F{{vQLSziDE literal 0 HcmV?d00001 diff --git a/desktop/onionshare/resources/images/tor-connect-stars.png b/desktop/onionshare/resources/images/tor-connect-stars.png new file mode 100644 index 0000000000000000000000000000000000000000..9aa1ad4f2a1174c3432a42d765b522fb3f8ac5f1 GIT binary patch literal 14135 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 literal 0 HcmV?d00001 diff --git a/desktop/onionshare/tab_widget.py b/desktop/onionshare/tab_widget.py index 29f443ac..4892b15f 100644 --- a/desktop/onionshare/tab_widget.py +++ b/desktop/onionshare/tab_widget.py @@ -38,13 +38,14 @@ class TabWidget(QtWidgets.QTabWidget): bring_to_front = QtCore.Signal() - def __init__(self, common, system_tray, status_bar): + def __init__(self, common, system_tray, status_bar, window): super(TabWidget, self).__init__() self.common = common self.common.log("TabWidget", "__init__") self.system_tray = system_tray self.status_bar = status_bar + self.window = window # Keep track of tabs in a dictionary that maps tab_id to tab. # Each tab has a unique, auto-incremented id (tab_id). This is different than the @@ -219,7 +220,7 @@ class TabWidget(QtWidgets.QTabWidget): return connection_tab = AutoConnectTab( - self.common, self.current_tab_id, self.status_bar, parent=self + self.common, self.current_tab_id, self.status_bar, self.window, parent=self ) connection_tab.close_this_tab.connect(self.close_connection_tab) connection_tab.tor_is_connected.connect(self.tor_is_connected) diff --git a/desktop/onionshare/tor_connection.py b/desktop/onionshare/tor_connection.py index f6b4bcb2..839757fd 100644 --- a/desktop/onionshare/tor_connection.py +++ b/desktop/onionshare/tor_connection.py @@ -49,6 +49,7 @@ class TorConnectionWidget(QtWidgets.QWidget): open_tor_settings = QtCore.Signal() success = QtCore.Signal() fail = QtCore.Signal(str) + update_progress = QtCore.Signal(int) def __init__(self, common, status_bar): super(TorConnectionWidget, self).__init__(None) @@ -120,6 +121,7 @@ class TorConnectionWidget(QtWidgets.QWidget): def _tor_status_update(self, progress, summary): self.progress.setValue(int(progress)) + self.update_progress.emit(int(progress)) self.label.setText( f"{strings._('connecting_to_tor')}
{summary}" ) @@ -131,6 +133,7 @@ class TorConnectionWidget(QtWidgets.QWidget): # Close the dialog after connecting self.progress.setValue(self.progress.maximum()) + self.update_progress.emit(int(self.progress.maximum())) self.success.emit() self._reset() @@ -153,6 +156,7 @@ class TorConnectionWidget(QtWidgets.QWidget): def _reset(self): self.label.setText("") self.progress.setValue(0) + self.update_progress.emit(0) class TorConnectionThread(QtCore.QThread):