From b4e70bed579d0d72d53d2f4bbc01130d3d7b85da Mon Sep 17 00:00:00 2001 From: Micah Lee Date: Sat, 2 Nov 2019 22:55:22 -0700 Subject: [PATCH] Make it so when you open the GUI, all of the persistent tabs automatically open as well --- onionshare_gui/tab/mode/file_selection.py | 22 +++++++++++++++ .../tab/mode/share_mode/__init__.py | 4 +-- onionshare_gui/tab/tab.py | 3 ++ onionshare_gui/tab_widget.py | 28 +++++++++---------- 4 files changed, 39 insertions(+), 18 deletions(-) diff --git a/onionshare_gui/tab/mode/file_selection.py b/onionshare_gui/tab/mode/file_selection.py index 67a23fc5..baa460f3 100644 --- a/onionshare_gui/tab/mode/file_selection.py +++ b/onionshare_gui/tab/mode/file_selection.py @@ -383,6 +383,9 @@ class FileSelection(QtWidgets.QVBoxLayout): # Update the file list self.file_list.update() + # Save the latest file list to mode settings + self.save_filenames() + def add(self): """ Add button clicked. @@ -452,6 +455,25 @@ class FileSelection(QtWidgets.QVBoxLayout): """ return len(range(self.file_list.count())) + def get_filenames(self): + """ + Return the list of file and folder names + """ + filenames = [] + for index in range(self.file_list.count()): + filenames.append(self.file_list.item(index).filename) + return filenames + + def save_filenames(self): + """ + Save the filenames to mode settings + """ + filenames = self.get_filenames() + if self.parent.tab.mode == self.common.gui.MODE_SHARE: + self.parent.settings.set("share", "filenames", filenames) + elif self.parent.tab.mode == self.common.gui.MODE_WEBSITE: + self.parent.settings.set("website", "filenames", filenames) + def setFocus(self): """ Set the Qt app focus on the file selection box. diff --git a/onionshare_gui/tab/mode/share_mode/__init__.py b/onionshare_gui/tab/mode/share_mode/__init__.py index 8d9b323a..9d22e401 100644 --- a/onionshare_gui/tab/mode/share_mode/__init__.py +++ b/onionshare_gui/tab/mode/share_mode/__init__.py @@ -204,9 +204,7 @@ class ShareMode(Mode): """ # Add progress bar to the status bar, indicating the compressing of files. self._zip_progress_bar = ZipProgressBar(self.common, 0) - self.filenames = [] - for index in range(self.file_selection.file_list.count()): - self.filenames.append(self.file_selection.file_list.item(index).filename) + self.filenames = self.file_selection.get_filenames() self._zip_progress_bar.total_files_size = ShareMode._compute_total_size( self.filenames diff --git a/onionshare_gui/tab/tab.py b/onionshare_gui/tab/tab.py index 04e4bf9d..cf648d8c 100644 --- a/onionshare_gui/tab/tab.py +++ b/onionshare_gui/tab/tab.py @@ -138,15 +138,18 @@ class Tab(QtWidgets.QWidget): ) self.persistent_image_label.setFixedSize(20, 20) + def init(self, mode_settings=None): if mode_settings: # Load this tab self.settings = mode_settings mode = self.settings.get("persistent", "mode") if mode == "share": + self.filenames = self.settings.get("share", "filenames") self.share_mode_clicked() elif mode == "receive": self.receive_mode_clicked() elif mode == "website": + self.filenames = self.settings.get("website", "filenames") self.website_mode_clicked() else: # This is a new tab diff --git a/onionshare_gui/tab_widget.py b/onionshare_gui/tab_widget.py index 2d53ea32..70ebfb66 100644 --- a/onionshare_gui/tab_widget.py +++ b/onionshare_gui/tab_widget.py @@ -40,7 +40,7 @@ class TabWidget(QtWidgets.QTabWidget): # Keep track of tabs in a dictionary self.tabs = {} - self.tab_id = 0 # each tab has a unique id + self.current_tab_id = 0 # Each tab has a unique id # Define the new tab button self.new_tab_button = QtWidgets.QPushButton("+", parent=self) @@ -88,31 +88,29 @@ class TabWidget(QtWidgets.QTabWidget): def new_tab_clicked(self): # Create a new tab - tab = Tab(self.common, self.tab_id, self.system_tray, self.status_bar) - self.add_tab(tab) + self.add_tab() def load_tab(self, mode_settings_id): # Load the tab's mode settings mode_settings = ModeSettings(self.common, id=mode_settings_id) - tab = Tab( - self.common, - self.tab_id, - self.system_tray, - self.status_bar, - mode_settings=mode_settings, - ) - self.add_tab(tab) + self.add_tab(mode_settings) - def add_tab(self, tab): + def add_tab(self, mode_settings=None): + tab = Tab(self.common, self.current_tab_id, self.system_tray, self.status_bar) tab.change_title.connect(self.change_title) tab.change_icon.connect(self.change_icon) tab.change_persistent.connect(self.change_persistent) - self.tabs[self.tab_id] = tab - self.tab_id += 1 - index = self.addTab(tab, "New Tab") + self.tabs[self.current_tab_id] = tab + self.current_tab_id += 1 + + index = self.addTab(tab, strings._("gui_new_tab")) self.setCurrentIndex(index) + tab.init(mode_settings) + # If it's persistent, set the persistent image in the tab + self.change_persistent(tab.tab_id, tab.settings.get("persistent", "enabled")) + def change_title(self, tab_id, title): index = self.indexOf(self.tabs[tab_id]) self.setTabText(index, title)